根据另一个表上的条件在一个MySQL表中查找条目

问题描述:

我有一张硬件表和一个事件表。每个硬件都有唯一的标签,事件与标签相关联。根据另一个表上的条件在一个MySQL表中查找条目

如何选择所有至少有一个事件列为未解决的硬件?

我不能只是做一个连接,因为如果一块硬件有多个未解决的问题,它会显示多次。

select distinct(hardware_name) 
from hardware,incidents 
where hardware.id = incidents.hardware_id and incidents.resolved=0; 
+0

我不认为硬件表将有一个indident_id,因为可以有多个事件相同的硬件。它应该是相反的。 – 2008-10-16 19:49:35

像这样的东西应该这样做:

Select A.HardwareID A.HadwareName, B.UnresolvedCount 
From (Hardware A) 
Inner Join 
(
    Select HardwareID, Count(1) As UnresolvedCount 
    From Incidents 
    Where Resolved = 0 
    Group By HardwareID 
) As B On A.HardwareID = B.HardwareID 

这也可以工作

SELECT hd.name, inc.issue, FROM hardware hd INNER JOIN inc ON hd.tag = inc.tag AND inc.issue = 'unresolved' group by hd.name