题目要求:获取所有非manager员工当前的薪水情况,给出dept_no、emp_no以及salary ,当前表示to_date='9999-01-01'。

  • 思路:
    三表连接,在部门员工表dept_emp基础上,增加部门管理人dept_manager信息,再增加薪资salaries信息,根据员工emp_no与对应部门管理人的emp_no不同,筛选出非manager。
  • 注意事项:
  1. dept_manager.to_date不能限制为‘9999-01-01’,会报错,错误原因为筛选掉了曾经为管理者的人。
  2. 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