SQL JOIN,从4个表返回数据?

时间:2014-06-25 08:15:19

标签: sql left-join outer-join

我的查询有效:

SELECT
    u.UserName, v.registration, 
    CONVERT(CHAR(4), i.starttime, 100) + CONVERT(CHAR(4), i.starttime, 120) as StartTime , 
    COUNT(*) AS NumberOfInspections, 
    COUNT(id.id) AS NumberOfDefects
FROM
    INSPECTIONS i
join 
    [user] u on i.DRIVERID = u.UserID 
join 
    Vehicle v on i.VEHICLEID = v.VehicleID 
left outer join 
    INSPECTIONDEFECTS id on id.inspectionid = i.id
WHERE 
    i.COMPANYID = 3 
    AND i.STARTTIME > '01-jan-2014' 
GROUP BY 
    u.UserName, v.registration, 
    CONVERT(CHAR(4), i.starttime, 100) + CONVERT(CHAR(4), i.starttime, 120)
ORDER BY 
    u.UserName, v.registration

但是我不想在其中有计数,有没有办法删除它们并让它仍然有效?每当我这样做时,查询将不再起作用。

2 个答案:

答案 0 :(得分:0)

您还需要移除查询的group by部分,以便在没有COUNT的情况下使此查询正常工作。

答案 1 :(得分:0)

尝试删除COUNT以及GROUP BY尝试此查询,我希望它能正常工作

    SELECT u.UserName, v.registration, CONVERT(CHAR(4), 
    i.starttime, 100) + CONVERT(CHAR(4), i.starttime, 120) AS StartTime, (id.id) AS NumberOfDefects
    FROM INSPECTIONS i
    JOIN [user] u on i.DRIVERID = u.UserID 
    JOIN Vehicle v on i.VEHICLEID = v.VehicleID 
    LEFT OUTER JOIN INSPECTIONDEFECTS id on id.inspectionid = i.id
    where i.COMPANYID = 3 and i.STARTTIME > '01-jan-2014' 
    order by u.UserName, v.registration