题目描述:获取所有当前在职的非manager员工薪水情况,给出dept_no、emp_no以及salary。(题目要求自己修改了一下,感觉加上当前在职的更合理)。
一、join..on+not in
select de.dept_no, e.emp_no, s.salary from employees e join dept_emp de on e.emp_no=de.emp_no join salaries s on e.emp_no =s.emp_no where e.emp_no not in ( select emp_no from dept_manager where to_date="9999-01-01" ) and de.to_date="9999-01-01"
not in找出不是是当前经理的emp_no。join..on找出所有员工的信息。de.to_date="9999-01-01"筛出当前在职员工。
二、只用join..on解决
select de.dept_no, e.emp_no, s.salary from employees e join dept_emp de on e.emp_no=de.emp_no join salaries s on e.emp_no =s.emp_no join dept_manager dm on de.dept_no=dm.dept_no and de.emp_no <> dm.emp_no and de.to_date=dm.to_date where de.to_date="9999-01-01"
思路与方法一致。join..on找出所有每个部门不是在职经理的员工信息。where筛出在职员工的信息。