MS Access 的 INNER JOIN 问题

Posted

技术标签:

【中文标题】MS Access 的 INNER JOIN 问题【英文标题】:INNER JOIN issue with MS Access 【发布时间】:2012-12-04 15:07:06 【问题描述】:

有谁知道下面的查询有什么不正确的地方吗?

SELECT S1.[Company], COUNT(S1.[Milestone]) AS ShouldBeMilestones

FROM Sheet1 AS S1

INNER JOIN Sheet1 S2
ON S2.[Company] = S1.[Company]
AND S2.[Project] = S1.[Project]
AND S2.[Milestone] = 'Milestone 1'
AND S2.[%compl#] = 100

INNER JOIN Sheet1 S3
ON S3.[Company] = S1.[Company]
AND S3.[Project] = S1.[Project]
AND S3.[Milestone] = 'Milestone 2'
AND S3.[%compl#] = 100

WHERE ((S1.[Task class] <> 'A') AND (S1.[Task class] <> 'B') AND (S1.[Task class] <> ''))
AND S1.[Milestone] NOT LIKE '0.*' AND S1.[Milestone] NOT LIKE '1.*'
AND S1.[Start] <= Now()

GROUP BY S1.[Company];

我在 MS Access 2010 中运行时收到“FROM 子句中的语法错误”消息...

任何想法将不胜感激!

谢谢,

【问题讨论】:

认为(但不能确定地记得)Access 需要多个连接以 (()) 括起来。所以FROM (((Sheet1 AS s1) INNER JOIN Sheet1 S2 ON .....) INNER JOIN Sheet1 S3 ON ....) 【参考方案1】:

MS Access SQL 的奇怪之处在于,在多 JOIN 查询中,您必须在 JOINs 周围加上括号。我讨厌这个功能,还没有自己解决它背后的“逻辑”。您可能很幸运在 Access 查询生成器中重新构建了一个简单版本,然后在不弄乱括号的情况下对其进行编辑。

【讨论】:

我其实是通过SQL编辑器写的。试图通过向导构建它,但它不起作用。不知道如何从括号开始。你有什么建议吗?谢谢!!! 我不想窃取信用; @MichaelBerkowski 似乎在对您的问题的评论中有一个想法。 嗨科格。通过执行迈克尔建议的操作,我收到一条新消息错误:“JOIN NOT SUPPORTED” 您可以在原始帖子中添加您的新代码吗? (如果可以的话,留下你的原件,它有助于展示解决方案的进展) 也许这个链接会有所帮助? social.msdn.microsoft.com/Forums/is/accessdev/thread/…

以上是关于MS Access 的 INNER JOIN 问题的主要内容,如果未能解决你的问题,请参考以下文章

MS Access 多 (INNER, LEFT & RIGHT) JOIN 查询

MS Access Inner Join 3 个具有相同 field_name 的表

如何使用多个 INNER JOIN 加快查询速度

多个 INNER JOIN SQL ACCESS

在 SQL ACCESS 中使用 LEFT 或 INNER JOIN 和 WHERE 的问题

在 MS Query 中使用多个 INNER JOIN 的 FROM 子句中的子查询的语法