方法一:
思路:
先用员工编号 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



京公网安备 11010502036488号