方法一:
思路:用两次左外连接,然后查询返回 last_name,first_name,dept_name
代码:
select
last_name,
first_name,
dept_name
from
employees e
left join dept_emp dp on e.emp_no = dp.emp_no
left join departments ds on dp.dept_no = ds.dept_no
方法二:
思路:
本题关键在于理清三表之间关联关系。需要使用两次左联结。红色部分可以省略。
①题目要求包括暂时没有分配部门的员工,所以将 employees 作为主表,使用左联结将其和 dept_emp 表联结,联结条件为员工编号 emp_no,得出所有员工所在部门,并将结果命名为 a。
②将查询结果 a 与 departments 左联结,联结条件为部门编号 dept_no,求出部门名字 dept_name。
代码:
SELECT
last_name,
first_name,
dept_name
FROM
(
SELECT
e.last_name,
e.first_name,
de.dept_no
FROM
employees e
LEFT JOIN dept_emp de ON e.emp_no = de.emp_no
) a
LEFT JOIN departments dp ON a.dept_no = dp.dept_no;



京公网安备 11010502036488号