![](/img/trans.png)
[英]MS Access/JET “Join Expression Not Supported” Any Way to Fix This Query?
[英]MS Acces Jet SQL Error: Join Expression not supported with multiple Join conditions
我正在尝试在 Access 中运行此 SQL 表达式:
Select *
From ((TableA
Left Join TableB
On TableB.FK = TableA.PK)
Left Join TableC
On TableC.FK = TableB.PK)
Left Join (SELECT a,b,c FROM TableD WHERE b > 1) AS TableD
On (TableD.FK = TableC.PK AND TableA.a = TableD.a)
但它不断收到错误:不支持加入表达式。 有什么问题? 抱歉,我刚开始使用 Jet-SQL,在 T-SQL 中一切正常。 谢谢
问题是最终的外连接条件TableA.a = TableD.a
将导致查询包含不明确的外连接,因为TableA
连接到TableD
的记录将取决于TableA->TableB
之间连接的结果, TableB->TableC
和TableC->TableD
。
为避免这种情况,您可能需要使用子查询中存在的表TableA
、 TableB
和TableC
之间的连接来构建查询,然后将其结果外部连接到TableD
。 这明确定义了计算连接的顺序。
例如:
select * from
(
select TableA.a, TableC.PK from
(
TableA left join TableB on TableA.PK = TableB.FK
)
left join TableC on TableB.PK = TableC.FK
) q1
left join
(
select TableD.a, TableD.b, TableD.c, TableD.FK from TableD
where TableD.b > 1
) q2
on q1.a = q2.a and q1.PK = q2.FK
考虑将每个连接关联到FROM
表以避免嵌套关系。
SELECT *
FROM ((TableA
LEFT JOIN TableB
ON TableB.FK = TableA.PK)
LEFT JOIN TableC
ON TableC.FK = TableA.PK)
LEFT JOIN
(SELECT FK,a,b,c
FROM TableD WHERE b > 1
) AS TableD
ON (TableD.FK = TableA.PK)
AND (TableD.a = TableA.a)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.