方法一:
思路:用两次左外连接,然后查询返回 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;