思考
- 需要所有员工的last_name和first_name, 这两个信息都来自于employees,所以要把employees作为主表
- 先连接employees和dept_emp,将employees作为主表,把dept_no信息添加进来
- 再连接第2步中的表 和 departments,依然是将包含employees表内容的表作为主表,把dept_name信息添加进来
答案
select last_name, first_name, dept_name from dept_emp de right join employees e on de.emp_no = e.emp_no left join departments d on de.dept_no = d.dept_no;
优化
一个右外连接和一个左外连接显得有点乱,可以改成两个左外连接
select last_name, first_name, dept_name from employees e left join dept_emp de on de.emp_no = e.emp_no left join departments d on de.dept_no = d.dept_no;
注意,两个join连着用,意味着先把employees和dept_emp连接,然后将连接后的表再与departments表连接,而不是employees表分别与dept_emp、departments表连接