Поиск записей в одной таблице MySQL на основе условий другой таблицы - PullRequest
2 голосов
/ 16 октября 2008

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

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

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

Ответы [ 3 ]

10 голосов
/ 16 октября 2008
select distinct(hardware_name) 
from hardware,incidents 
where hardware.id = incidents.hardware_id and incidents.resolved=0;
3 голосов
/ 16 октября 2008

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

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 голосов
/ 07 июня 2017

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

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