方法一:
思路:
先用员工编号 not in 经理表,找出所有员工,join 上部门员工表,join 上工资表,查询出结果即可。
代码:
select dp.dept_no, e.emp_no, salary from ( select emp_no from employees where emp_no not in ( select emp_no from dept_manager ) ) e left join dept_emp dp on e.emp_no = dp.emp_no left join salaries s on dp.emp_no = s.emp_no
方法二:
思路:
①先将部门员工表 dept_emp 和部门 经理表 dept_manager 联结,由 dept_emp 的员工编号和 dept_manager 的员工编号不相等找出非 manager 员工。
②再联结工资表找出工资,记得限定工资表 salaries 和员工表 dept_emp 的时间都为 to_date='9999-01-01'
最后记得按部门编号和员工编号升序
代码:
SELECT a.dept_no, a.emp_no, s.salary FROM ( SELECT de.emp_no, de.dept_no FROM dept_emp de INNER JOIN dept_manager dm ON de.dept_no = dm.dept_no WHERE de.emp_no <> dm.emp_no AND de.to_date = '9999-01-01' ) a INNER JOIN salaries s ON a.emp_no = s.emp_no WHERE s.to_date = '9999-01-01' order by a.dept_no, a.emp_no