2008-10-16 6 views
2

У меня есть таблица аппаратных средств и таблица инцидентов. Каждое оборудование имеет уникальный тег, а инциденты привязаны к тегу.Поиск записей в одной таблице MySQL на основе условий в другой таблице

Как выбрать все оборудование, имеющее хотя бы один инцидент, указанный как неразрешенный?

Я не могу просто присоединиться, потому что тогда, если одна часть аппаратного обеспечения имеет несколько нерешенных проблем, она будет отображаться несколько раз.

ответ

10
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

3

Что-то вроде этого следует сделать это:

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 
0

Это может также работать

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