我正在开发一个IT支持管理数据库。以下SQL查询涉及两个表。 “设备”表包含公司拥有的所有PC,“服务”表是在设备上执行的每个服务的列表(即,每个设备可以具有多个服务)。
我希望此查询检索entire 'devices' table
,但包含一个额外的列,显示每个total
的{{1}}个services
个数。
我提出的以下陈述可能远非正确。对于每一行,它返回device
表中记录总数的计数(即每行上的相同数字),而不是对每个设备进行分组/过滤。
'services'
我应该采用什么方法来实现这一目标?提前感谢您的任何指导或帮助!
答案 0 :(得分:1)
如果您想要devices
表中的所有行,那么dbo.devices
的{{1}}左侧应该出现Left outer Join
。
移除subquery
并将其设为Left outer join
,然后计算每assetID
次的服务数。试试这个。
SELECT devices.assetID,
TotalServices=Count(services.id)
FROM dbo.devices
LEFT JOIN dbo.services
ON services.assetID = devices.assetID
GROUP BY devices.assetID