2017-10-10 124 views
0

找到0值的記錄的問題是 「找項目經理那些誰不管理任何項目,列表名稱和ID」如何通過比較兩個表

Project manager table and Projects table

第一個表是「PM」第二個表是「Projects」 如何編寫此查詢?我嘗試了下面的查詢,但它沒有奏效。

select a.ID,a.name 
from PM a,Projects b 
where a.ID=b.ID 
group by a.name 
having COUNT(b.ID)=0; 
+0

儘量不要使用從PM a,項目b'的關聯連接' –

+0

在閱讀你的代碼時,看起來你的描述向後在哪個表上,但是提供的答案仍然是正確的。 –

回答

3

不能只是你一個左連接在這裏:

SELECT 
    a.ID, a.name 
FROM PM a 
LEFT JOIN Projects b 
    ON a.ID = b.ID 
WHERE b.ID IS NULL 

但你的表結構是根本不清楚給我。讓管理員ID列在兩個表中都具有相同的名稱是令人困惑的。

另外,您在當前查詢中正在執行隱式內部聯接。不是邪惡的,但它肯定會讓你很難看出你如何關聯這兩張桌子。有了明確的左邊加入,希望清楚這裏發生了什麼。那些沒有項目的經理記錄PM因此將匹配到沒有項目記錄。此標記將是一個(單個)管理器記錄,其所有項目列都爲空。

+0

就是我要寫的東西。 –

+0

這是我需要的,非常感謝 –