题目要求:获取所有非manager员工当前的薪水情况,给出dept_no、emp_no以及salary ,当前表示to_date='9999-01-01'。
- 思路:
三表连接,在部门员工表dept_emp
基础上,增加部门管理人dept_manager
信息,再增加薪资salaries
信息,根据员工emp_no与对应部门管理人的emp_no不同,筛选出非manager。 - 注意事项:
- dept_manager.to_date不能限制为‘9999-01-01’,会报错,错误原因为筛选掉了曾经为管理者的人。
- employees表没有涉及到,可以不用参与到连接过程中。
- 代码如下:
select de.dept_no, de.emp_no, s.salary from dept_emp de left join dept_manager dm on de.dept_no=dm.dept_no and de.to_date='9999-01-01' left join salaries s on de.emp_no=s.emp_no and s.to_date='9999-01-01' where de.emp_no!=dm.emp_no