【SQL218】题解 | 查找所有员工的last_name和first_name以及对应的
查找所有员工的last_name和first_name以及对应的dept_name
https://www.nowcoder.com/practice/5a7975fabe1146329cee4f670c27ad55
select e.last_name, e.first_name, s.dept_name from (employees e left join dept_emp d on e.emp_no = d.emp_no) left join departments s on d.dept_no = s.dept_no;
这道题是查找所有员工的last_name和first_name以及对应的dept_name,也包括暂时没有分配部门的员工
两个关键点:
1.思考如何将employees表、dept_emp表和departments表连接,employees表和dept_emp表按照员工编号相等e.emp_no = d.emp_no左连接,接着将左连接后的表与departments表按照部门编号相等d.emp_no = s.emp_no左连接
(employees e left join dept_emp d on e.emp_no = d.emp_no) left join departments s on d.dept_no = s.dept_no
2.查找所有员工的last_name和first_name以及对应的dept_name,注意有些重复的字段要写明哪张表,防止出现歧义
select e.last_name, e.first_name, s.dept_name from
完整代码如下:
select e.last_name, e.first_name, s.dept_name from (employees e left join dept_emp d on e.emp_no = d.emp_no) left join departments s on d.dept_no = s.dept_no; # select e.last_name, e.first_name, s.dept_name from employees e left join dept_emp d on e.emp_no = d.emp_no left join departments s on d.dept_no = s.dept_no;或者去掉第一个左连接的括号也可以
完结
SQL学习专栏 文章被收录于专栏
发个sql学习和实践的小记录

