«Выражение соединения не поддерживается» для более чем двух условий ON с INNER JOIN - PullRequest
0 голосов
/ 29 мая 2020

Я боролся с различными синтаксическими ошибками в запросе в MS Access, который отлично работает в T SQL.

Например, я узнал, что MS Access требует скобок, когда существует более одного левого / внутреннего соединения, а также если существует более одного условия ON для любого из этих соединений, благодаря этому сообщению и этот пост .

Однако теперь я застрял с другой ошибкой «Выражение соединения не поддерживается», когда у меня есть три условия ON для INNER JOIN:

SELECT *  
FROM ((
        (Table1
        INNER JOIN Table2 ON Table2.Col2 = Table1.Col2)

        LEFT JOIN Table3 
        ON (Table1.id = Table3.fid
             and Table3.Col2 > SomeNumber)
        )

        LEFT JOIN Table4 
        ON (Table4.Col2 = Table3.Col2
             and Table4.Col4 = 'SomeValue'
             and Table4.fid = Table1.x_id)
        )

В приведенном выше примере возникает ошибка «Выражение соединения не поддерживается», но если я удалю одно из трех условий в последнем LEFT JOIN ON, с SQL все в порядке, например:

SELECT *  
FROM ((
    (Table1
    INNER JOIN Table2 ON Table2.Col2 = Table1.Col2)

    LEFT JOIN Table3 
    ON (Table1.id = Table3.fid
         and Table3.Col2 > SomeNumber)
    )

    LEFT JOIN Table4 
    ON (Table4.Col2 = Table3.Col2
         and Table4.fid = Table1.x_id)
    )

Любые два из трех условий были приняты выше. Я даже пытался добавить такие дополнительные круглые скобки, но это тоже не сработало:

    LEFT JOIN Table4 
        ON ((Table4.Col2 = Table3.Col2
             and Table4.Col4 = 'SomeValue')
             and Table4.fid = Table1.x_id)
        )

Пожалуйста, помогите - спасибо!

...