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 查询中,您必须在 JOIN
s 周围加上括号。我讨厌这个功能,还没有自己解决它背后的“逻辑”。您可能很幸运在 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 的表