问题




思路
/*查找所有员工的last_name和first_name以及对应的dept_name,也包括暂时没有分配部门的员工
先根据员工编号匹配到部门编号,再通过部门编号匹配到部门名,两次左连接*/
select e.last_name,e.first_name,de.dept_name from employees as e
left join dept_emp as d on e.emp_no = d.emp_no
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;