SQL_213

查找所有员工的last_name和first_name以及对应的dept_name

https://www.nowcoder.com/practice/5a7975fabe1146329cee4f670c27ad55

方法一:

思路:用两次左外连接,然后查询返回 last_name,first_name,dept_name

代码:

select
    last_name,
    first_name,
    dept_name
from
    employees e
    left join dept_emp dp on e.emp_no = dp.emp_no
    left join departments ds on dp.dept_no = ds.dept_no

方法二:

思路:

本题关键在于理清三表之间关联关系。需要使用两次左联结。红色部分可以省略。

①题目要求包括暂时没有分配部门的员工,所以将 employees 作为主表,使用左联结将其和 dept_emp 表联结,联结条件为员工编号 emp_no,得出所有员工所在部门,并将结果命名为 a。

②将查询结果 a 与 departments 左联结,联结条件为部门编号 dept_no,求出部门名字 dept_name。

代码:

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

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-09 13:05
TMD找工作本来就烦,这东西什么素质啊😡
Beeee0927:hr是超雄了,不过也是有道理的
点赞 评论 收藏
分享
06-17 21:57
门头沟学院 Java
白友:噗嗤,我发现有些人事就爱发这些,明明已读不回就行了,就是要恶心人
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务