Я боролся с различными синтаксическими ошибками в запросе в 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)
)
Пожалуйста, помогите - спасибо!