一種方式來做到這一點是統計所有項目,計算項目的員工數量,然後選擇在相同數量的項目工作的所有員工:
DECLARE @ProjectCount int
SELECT @ProjectCount = Count(*) FROM Projects
SELECT e.*
FROM Employee e
WHERE (SELECT COUNT(1) FROM Works_On w WHERE w.ESSN = e.SSN) = @ProjectCount
ProjectCount
變量是有跳過計數項目爲每一位員工。
UPDATE:它是如何工作:
爲每位員工計算多少記錄是Works_On
表字段ESSN
等於當前僱員的SSN
然後這個數字比較項目總數。 查詢:
SELECT COUNT(1) FROM Works_On
會給你(你的情況6)在Works_On
表中的記錄總數。我們要統計有多少記錄有每個員工,這就是爲什麼我們嵌入在我們的條件主要查詢的查詢從Works_On
表具有當前員工SSN
只選擇記錄。如果你有一些編程語言來寫這個,這是邏輯上等同於foreach
循環員工集合,其中在循環的身體,你選擇Works_On
表中的所有記錄,當前員工,然後將其與項目總數相比較。如果當前員工的項目數量等於項目總數,請對其進行計數。
我希望這會有所幫助。
你們是更好:) – LukeP
肯定能行!謝謝,不得不刪除你創建的變量,以使其在MySQL上工作。你能解釋它是如何工作的嗎?當我運行子查詢時,它給了我6,而項目數量爲3 – Shakir
我很高興我可以提供幫助。我已經通過簡短的解釋擴展瞭解決方案。如果您仍有問題,請詢問。 – Kosta