簡體   English   中英

MS Access Jet SQL 錯誤:多個連接條件不支持連接表達式

[英]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->TableCTableC->TableD

為避免這種情況,您可能需要使用子查詢中存在的表TableATableBTableC之間的連接來構建查詢,然后將其結果外部連接到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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM