【问题标题】:SQL Join expression not supported不支持 SQL 连接表达式
【发布时间】:2014-08-11 19:45:21
【问题描述】:

以下是我的查询:

SELECT 
   UT.AgentName AS [Agent Name], 
   UT.TeamName AS Team, 
   Format(Now(),"Short Date") AS [As Of], 
   Sum(I.RegPointValue) AS Points
FROM 
   (SELECT 
       UU.AgentID, 
       (Nz(UU.LastName,'')+", "+Nz(UU.FirstName,'')) AS AgentName , 
       TT.TeamName 
    FROM 
       Users AS UU 
      INNER JOIN 
       Teams AS TT 
      ON UU.TeamID = TT.TeamID) AS UT 
 LEFT JOIN 
    (InfractionTypes AS I 
   INNER JOIN 
      (DateCodes AS D 
     INNER JOIN 
        AquiredInfractions AS AI 
     ON D.DateID = AI.DateID) 
   ON I.InfractionID = AI.InfractionID)
 ON UT.AgentID = AI.AgentID
WHERE (((D.DateValue)>=#4/1/2014#))
GROUP BY UT.TeamName, UT.AgentName, I.RegPointValue;

这样做的目的是总结一个人将根据他们收到的出勤违规获得的所有分数。如果我将LEFT JOIN 更改为INNER JOIN,则查询有效,但仅返回已收到出勤违规的人员姓名。但我想要的是它返回所有人的姓名,如果他们没有收到任何积分,他们的积分为 0。

我尝试保存或执行时得到的错误是Join expression not supported。在过去的几个小时里,我一直试图通过弄乱连接的顺序来让它工作,但无济于事。使用 MS-Access 2013。

【问题讨论】:

    标签: sql ms-access join left-join


    【解决方案1】:

    您缺少一些别名。

    每个用作表的内部查询必须指定一个别名,并且在连接它们时,您必须使用该别名,并且只能使用连接条件中的选定列。

    例如,为这些行添加别名:

    ...
        ON D.DateID = AI.DateID) AS SOMETHING_1
      ON I.InfractionID = AI.InfractionID) AS SOMETHING_2
    

    【讨论】:

    • 在上面睡觉之后,我明白了你的意思并让它工作了。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2017-04-12
    • 2015-04-25
    • 1970-01-01
    • 2012-01-22
    • 1970-01-01
    • 2010-10-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多