![](/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.