我有以下查询:如何修复此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)
的表格看起来像:
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
样本数据:
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
的问题是,如果在tblDomains
没有行匹配一个IPNumberID
在tblIPNumbers
我没有返回行。在这种情况下,我希望查询返回0
的单行Count(dom.DomainID) AS CountOfDomains
。
我试过LEFT
和RIGHT
连接的各种组合,它似乎是一个简单的问题,但我今天的SQL-fu很低。
会发生什么事,当你更换'JOIN与'LEFT JOIN tollon.tblDomains' tollon.tblDomains'? – 2009-12-03 10:54:49