gpt4 book ai didi

mysql - sql查询中的左外连接

转载 作者:搜寻专家 更新时间:2023-10-30 23:42:05 25 4
gpt4 key购买 nike

数据库:

EMPLOYEE (fname, minit, lname, ssn, birthdate, address, sex, salary, superssn, dno)     KEY: ssn
DEPARTMENT (dname, dnumber, mgrssn, mgrstartdate) KEY: dnumber.
PROJECT (pname, pnumber, plocation, dnum) KEY: pnumber.
WORKS_ON (essn, pno, hours) KEY: (essn, pno)
DEPENDENT (essn, dependent-name, sex, bdate, relationship) KEY: (essn, dependent-name)

我想使用left outer joingroup by 来...
查找那些从事 3 个或更多项目并且不在克利夫兰的经理的姓氏和 SSN。

这是我目前所拥有的:

select Lname
from Employee e outer join Department d
where (e.ssn = d.mgrssn)
and ssn NOT in (
select w.essn
from works_on w outer join Project p
where w.pno = p.pnumber
and p.plocation = 'Cleveland'
group by w.essn
having count(*) >= 3
)

我是否正确地使用了 left outer joingroup by?我应该将这段代码分成两部分,就像循环一样吗?

最佳答案

选择JOIN 查找员工的所有项目

首先 HAVING 告诉你这个用户在 'Cleveland' 没有项目

第二个 HAVING 告诉你这个用户有 3 个或更多项目

.

SELECT e.Lname, e.ssn
FROM Employee e
JOIN works_on w
ON e.ssn = w.essn
JOIN Project p
ON w.pno = p.pnumber
GROUP BY e.ssn
HAVING
SUM(CASE WHEN p.plocation = 'Cleveland' THEN 1 ELSE 0 END) = 0
AND COUNT(*) >= 3

关于mysql - sql查询中的左外连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33768374/

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