[英]Left Outer Join in sql query
數據庫:
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 join
和group 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 join
和group by
做對group 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.