2017-10-10 111 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

这是我需要的,非常感谢 –