【问题标题】:Access- "Join expression not supported"访问-“不支持连接表达式”
【发布时间】:2012-01-22 04:55:52
【问题描述】:

我在 MySQL 中有一个查询,它返回三列、一个候选人的 ID、联系他们的日期以及由谁联系。我正在尝试编写一个查询,该查询仅返回最近一次与他们联系的时间,以及他们的 ID 和由谁联系。

SELECT e.ID,
    ByWho,
    Date
FROM ContactSummaries e
JOIN(SELECT ID,
        MAX(Date) AS LastContact
    FROM ContactSummaries
    GROUP BY
        ID) lu
  ON (e.ID = lu.ID AND e.Date = lu.LastContact)

所以,这在 SQL Server Management Studio 中完美运行。当我将它粘贴到 Access 中以制作一个漂亮的小报告时,它抱怨“不完整的查询子句”。

然后我尝试了这个:

 SELECT
 ID,
 ByWhom,
 Date
 FROM( ContactSummaries AS [e]
 INNER JOIN
 SELECT ID,
 MAX(Date) AS LastContacted,
 ByWhom
 FROM ContactSummaries
 ON 
 ID, 
 MAX(Date) AS LastContacted,
 FROM ContactSummaries
 GROUP BY ID)
 AS [l]
 ON
 [e].ID = [l].ID,
 AND [e].Date = [l].LastContacted;

“不支持连接表达式”。我不太了解 SQL(或特别是 Access),看不出我做错了什么,这似乎与他们在 Microsoft 网站上的示例相匹配。

【问题讨论】:

    标签: sql ms-access inner-join


    【解决方案1】:

    您不能在 Access 中单独使用 Join。另请注意,日期是保留字。我想你想要

    SELECT e.ID,
        ByWho,
        [Date]
    FROM ContactSummaries e
    inner join (SELECT ID,
            MAX([Date]) AS LastContact
        FROM ContactSummaries
        GROUP BY
            ID) lu
      ON (e.ID = lu.ID AND e.Date = lu.LastContact)
    

    【讨论】:

    • e.[Date] = lu.LastContact,确定吗?
    • 嗯,有趣——这似乎有效。它给出的结果与我在 SSMS 中发布的第一个查询相同。谢谢!
    • 语法“内部连接”是在 Access 中加入的公认方式
    • @Mark Ba​​nnister 不需要括号,因为表名或别名是前缀。在 Access、AFAIK 中总是如此。
    猜你喜欢
    • 2021-10-14
    • 1970-01-01
    • 2014-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-12
    • 2015-04-25
    • 2010-10-13
    相关资源
    最近更新 更多