一开始写了两种解法,“解决方案一” 和 “解决方案二”,解决方案二解决不了问题,这两个解决方案的不同之处在于筛选条件where中的不同,“解决方案一”: where employees.emp_no not in(select emp_no from dept_manager)。“解决方案二”:(select emp_no from dept_manager)as emp_no_mag where not employees.emp_no = emp_no_mag.emp_no
解决方案一:使用了“in”,而解决方案二用了“=”。使用“=”使用与一个判断条件的情况,如果有多个判断的话需要用“in”。
select dept_no,not_mag.emp_no,salary
from dept_emp,salaries,
(
select employees.emp_no
from employees
where employees.emp_no not in(
select emp_no
from dept_manager
)
)as not_mag
where dept_emp.emp_no=not_mag.emp_no
and salaries.emp_no=not_mag.emp_no
and dept_emp.to_date=salaries.to_date
group by not_mag.emp_no

解决法案干二:
select dept_no,dept_emp.emp_no,salary
from dept_emp,salaries,
(
select employees.emp_no
from employees,
(
select emp_no
from dept_manager
)as emp_no_mag
where not employees.emp_no = emp_no_mag.emp_no
)as not_mag
where dept_emp.emp_no=not_mag.emp_no
and salaries.emp_no=not_mag.emp_no
and dept_emp.to_date=salaries.to_date
group by not_mag.emp_no