使用MS Access 2003通过ODBC进行嵌套的内部联接
|
如果可行:
SELECT COUNT(t1.ID) AS count FROM Project t1
INNER JOIN (SELECT DISTINCT t.Site,t.id FROM _Equipment_id t WHERE t.OEM LIKE \'%ABC%\') t2 ON t1.Site=t2.Site AND t1.id=t2.id
这有效:
SELECT COUNT(t3.ID) AS count FROM Wall t3
INNER JOIN Project t1 ON t3.Project_number=t1.Project_number
为什么这样不起作用:
SELECT COUNT(t3.ID) AS count FROM Wall t3
INNER JOIN Project t1 ON t3.Project_number=t1.Project_number
INNER JOIN (SELECT DISTINCT t.Site,t.id FROM _Equipment_id t WHERE t.OEM LIKE \'%ABC%\') t2 ON t1.Site=t2.Site AND t1.id=t2.id
最终,我有10个表(例如Wall表),我正尝试从第一个SELECT中获取总数。
没有找到相关结果
已邀请:
2 个回复
缝皋
也许只是语法错误?他们在底部提到嵌套的Office帮助。另一种可能性是,别名在某种程度上受到限制,因此它们对联接不可用,但是我不是MS Access方面的专家。也许您应该尝试完全删除别名。
踩什不
)开头的表名和作为SQL关键字(
)的
子句(\“ alias \”)。更正这些错误后,您的SQL即为有效的SQL-92语法。 可悲的是,问题在于Access(ACE,Jet等)不支持SQL-92标准。 Access坚持将每个嵌套的
子句放在括号中。 [此外:在标准SQL中允许在括号中加上7,因为它可能会更改查询结果。但是,Access不遵循编码器指定的顺序,而是允许自己评估fir7ѭ的顺序。因此,不仅Access的语法不符合该标准,而且还会失去功能!但是,Access的此进一步问题不会对该特定查询产生不良影响。] 您在同一范围内有两个
:
您的代码需要通过在括号中加上ѭ7来解决Access的问题。因为您所有的ѭ7are都是
,所以去哪里可能都没关系。 另外,关于更正
子句,Access再次不支持Standard SQL的带引号的标识符(
),并坚持使用专有的方括号语法(
)-当然,您可以选择其他名称,但是可能存在依赖它的应用程序代码。 解决两个访问问题的代码: