gpt4 book ai didi

mysql - 选择某个部门所有项目中的emp名称

转载 作者:行者123 更新时间:2023-11-29 02:15:39 25 4
gpt4 key购买 nike

enter image description here enter image description here


我如何修改此查询以仅显示 dpt 17 之前所有项目中的员工姓名。

到目前为止我有:

select fname, lname from employee where ssn in  
(
select distinct essn from works_on b where
b.pnum in ( select pnum from project where dnum = 17)

)

这是我创建的 sql fiddle 的链接 [Link]

非常感谢任何帮助。我正在尝试了解其工作原理背后的逻辑。

最佳答案

当您逐步学习 SQL 时,它很容易。我建议您运行这些查询并确保您理解它们的结果

部门 17 的第一个项目数据

 SELECT *
FROM project
WHERE project.dnum = 17

现在所有从事这些工作的人

 SELECT *
FROM project
LEFT JOIN works_on ON project.pnumber = works_on.pno
WHERE project.dnum = 17

我们如何知道 works_on.essn 计数等于项目总数

 SELECT works_on.essn
FROM project
LEFT JOIN works_on ON project.pnumber = works_on.pno
WHERE project.dnum = 17
GROUP BY works_on.essn
HAVING count(*) = (SELECT count(*) FROM project WHERE project.dnum = 17)

简单吧?

如果 having 中的子查询不起作用,您可以像这样使用交叉连接来完成

 SELECT works_on.essn
FROM project
LEFT JOIN works_on ON project.pnumber = works_on.pno
CROSS JOIN (SELECT count(*) AS C FROM project WHERE project.dnum = 17) SUB
WHERE project.dnum = 17
GROUP BY works_on.essn
HAVING count(*) = MAX(SUB.C)

关于mysql - 选择某个部门所有项目中的emp名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40311196/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com