je la requête suivante:Comment réparer cette requête SQL GROUP BY?
SELECT
dev.DeviceName, Count(dom.DomainID) AS CountOfDomains
FROM
tblDevices dev
JOIN
tblIPNumbers ip ON dev.DeviceName = ip.ServerName
JOIN
tblDomains dom ON dom.IPNumberID = ip.IPNumberID
WHERE
dom.PointerTo=0
AND dev.DeviceType='3'
AND (dev.[System]='32' OR dev.[System]='33')
AND dom.ClosedDate IS NULL AND dev.Active=1
GROUP BY
dev.DeviceName
ORDER BY
Count(dom.DomainID)
Les tableaux ressemblent:
tblDomains ========== DomainID int IPNumberID int ClosedDate datetime PointerTo int tblIPNumbers ============ IPNumberID int ServerName varchar(200) tblDevices ========== DeviceID int DeviceName varchar(200) System varchar(10) DeviceType varchar(10) Active bit
données Exemple:
tblDomains: =========== DomainID: 1234 IPNumberID: 1000 ClosedDate: NULL PointerTo: 0 tblIPNumbers: ============= IPNumberID: 1000 ServerName: WIN2008-01 tblDevices: =========== DeviceID: 1 DeviceName: WIN2008-01 System: 32 Active: 1 DeviceType: 3
Le problème est que s'il n'y a pas de lignes dans tblDomains
qui correspondent à IPNumberID
dans tblIPNumbers
Je ne reçois aucune ligne retournée. Je voudrais que la requête renvoie une seule ligne de 0
pour Count(dom.DomainID) AS CountOfDomains
dans ce cas.
J'ai essayé différentes combinaisons de jointures LEFT
et RIGHT
et cela semble être un problème simple, mais mon SQL-fu est faible aujourd'hui.
Que se passe lorsque vous remplacez '' JOIN tollon.tblDomains' avec LEFT JOIN tollon.tblDomains'? –