2008-10-16 6 views
2

J'ai une table de matériel et une table d'incidents. Chaque matériel a une étiquette unique et les incidents sont liés à l'étiquette.Trouver des entrées dans une table MySQL en fonction des conditions d'une autre table

Comment puis-je sélectionner tout le matériel dont au moins un incident n'est pas résolu?

Je ne peux pas simplement faire une jointure, car si un élément de matériel avait plusieurs problèmes non résolus, il apparaîtrait plusieurs fois.

Répondre

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

Je ne pense pas que la table du matériel aurait un indident_id car il peut y avoir plusieurs incidents pour le même matériel. Il devrait être l'inverse. –

+0

merci - vous avez raison et j'ai corrigé la réponse. –

3

Quelque chose comme ça devrait le faire:

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

Cela peut aussi travailler

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