问题

image.png
image.png
image.png
image.png

思路

  1. /*查找所有员工的last_name和first_name以及对应的dept_name,也包括暂时没有分配部门的员工
  2. 先根据员工编号匹配到部门编号,再通过部门编号匹配到部门名,两次左连接*/
  3. select e.last_name,e.first_name,de.dept_name from employees as e
  4. left join dept_emp as d on e.emp_no = d.emp_no
  5. left join departments de on d.dept_no = de.dept_no
/*根据employees中emp_no对应dept_emp中的dept_no,没有分配的员工找不到对应-->采用LEFT JOIN
再根据dept_no对应departments表中的dept_name,没有分配的员工找不到对应-->采用LEFT JOIN*/

SELECT last_name, first_name, dept_name
FROM employees AS e LEFT JOIN (SELECT emp_no, dept_name
                               FROM dept_emp AS de LEFT JOIN departments AS d
                               ON de.dept_no = d.dept_no)k
ON e.emp_no = k.emp_no;