【问题标题】:SQL JOIN, return data from 4 tables?SQL JOIN,从 4 个表返回数据?
【发布时间】:2014-06-25 08:15:19
【问题描述】:

我有这个在 atm 有效的查询:

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

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

【问题讨论】:

  • 如果您不想要计数,请从查询中删除 COUNT(*)。
  • 只是删除它不起作用,您需要在该部分之前聚合或 group by 并且 group by 不起作用!

标签: sql left-join outer-join


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    尝试删除 COUNTGROUP 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-21
      • 2018-05-07
      • 1970-01-01
      • 1970-01-01
      • 2021-05-25
      • 1970-01-01
      • 1970-01-01
      • 2013-08-27
      相关资源
      最近更新 更多