我正在为学校创建一个IT服务管理系统。我需要从SQL数据库检索一个查询,该查询显示设备的基本详细信息以及分配给该设备的所有者的ID。“设备”表列出了所有计算机,而“分配”表指定了分配给每个设备的用户(基于assetID)。
问题是我不确定如何从主查询中引用当前行的'assetID'值。
SELECT
devices.assetID,
devices.make,
devices.model,
TotalServices=Count(services.id),
AssignedOwner=(SELECT assignments.studentID FROM devices INNER JOIN assignments ON devices.assetID=assignments.assetID WHERE assignments.assetID=<VALUE OF ASSET ID FOR CURRENT ROW>)
FROM devices
LEFT JOIN services
ON services.assetID = devices.assetID
GROUP BY
devices.assetID,
devices.make,
devices.model
我不确定如何引用当前行的assetID的值来检索分配的用户的ID ...
assignments.assetID=<VALUE OF ASSET ID FOR CURRENT ROW>
在此先感谢您的指导!
我在想您要向分配表添加联接,例如:
select devices.assetid,
devices.make,
devices.model,
count(services.id) as totalservices,
assignments.studentid as assignedowner
from devices
left join assignments
on devices.assetid = assignments.assetid
left join services
on services.assetid = devices.assetid
group by devices.assetid,
devices.make,
devices.model,
assignments.studentid
该left join
或left outer join
(同样的事情),如果一个设备可能不会对相应的资产时,才需要assignments
并services
表,分别。您应该更改left join
为join
资产在其他所有表上始终具有价值(独立考虑每个表)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句