我正在爲我的數據庫考試學習,其中涵蓋了許多我需要手寫的SQL語句。下面是我的書中概述的兩種情景的架構圖和解決方案,這些方案對我來說似乎沒有意義。你可以向我解釋這2個SQL查詢嗎?
Q13:檢索所有員工的部門5誰每週工作超過10小時的項目了ProductX的名字。
SELECT FNAME, LNAME
FROM EMPLOYEE,PROJECT, WORKS_ON
WHERE DNO = 5 AND PNAME = ‘PRODUCT X’ AND HOURS>10 AND ESSN=SSN;
不應該WHERE子句包括PNO = NUMBER?如何知道WORKS_ON表參考PROJECT表中沒有包括這個?是因爲我們引用了ESSN = SSN?
Q1:檢索具有相同名字且與僱員性別相同的受撫養人的每名僱員的姓名。
SELECT E.FNAME, E.LNAME
FROM EMPLOYEE AS E
WHERE E.SSN IN (SELECT D.ESSN FROM DEPENDENT AS D WHERE E.FNAME = D.DEPENDENT_NAME AND D.SEX = E.SEX);
我明白此查詢一路上揚,直至WHERE子句。我不明白什麼E.SSN IN正在嘗試處理它之前的子查詢。如果有人能解釋這一點,那會很好。
切勿使用逗號連接語法。並參見相關與非相關的子查詢。 – Strawberry
你使用的是MySQL還是MS SQL Server? (不要標記不涉及的產品。) – jarlh