解题思路
1.题目条件“包括暂时没有分配部门的员工”,故只能使用外联结
2.联结表employees、表dept_emp,获取字段emp_no、last_name、first_name、dept_no 组成新表a
SELECT s1.emp_no,s1.last_name,s1.first_name,d1.dept_no FROM employees AS s1 LEFT JOIN dept_emp AS d1 ON s1.emp_no=d1.emp_no;
3.联结表dept_emp、表departments,获取字段dept_no、dept_name、emp_no 组成新表b
SELECT d2.emp_no,d2.dept_no,de1.dept_name FROM dept_emp AS d2 INNER JOIN departments AS de1 ON d2.dept_no=de1.dept_no;
4.联结表a、b 查询对应的last_name、first_name、dept_name
SELECT a.last_name,a.first_name,b.dept_name FROM (SELECT s1.emp_no,s1.last_name,s1.first_name,d1.dept_no FROM employees AS s1 LEFT JOIN dept_emp AS d1 ON s1.emp_no=d1.emp_no) AS a LEFT JOIN (SELECT d2.emp_no,d2.dept_no,de1.dept_name FROM dept_emp AS d2 INNER JOIN departments AS de1 ON d2.dept_no=de1.dept_no) AS b ON a.dept_no=b.dept_no AND a.emp_no=b.emp_no;