Множественное левое соединение в доступе
У меня есть следующий запрос, который работает для MySQL:
DELETE `test1`, `test2`, `test3`, `test4` FROM
`test1` LEFT JOIN `test2` ON test2.qid = test1.id
LEFT JOIN test3 ON test3.tid = test2.id
LEFT JOIN test4.qid = test1.id
WHERE test1.id = {0}
Но это не работает для MS Access. Я попытался добавить скобки вокруг LEFT JOIN
, но это дает мне синтаксическую ошибку в предложении FROM.
Итак, как должен выглядеть этот запрос, чтобы работать в MS Access?
2 ответа:
Для удаления доступа требуется звезда (*):
DELETE * FROM ...
Кроме того, соединения должны быть вложены с помощью скобок:
DELETE test1.*, test2.*, test3.*, test4.* FROM ( ( test1 LEFT JOIN test2 ON test1.qid = test2.id ) LEFT JOIN test3 ON test2.tid = test3.id ) LEFT JOIN test4 ON test1.qid = test4.id WHERE test1.id = {0}
Вот пример оператора select для трех таблиц с левыми соединениями:
SELECT FROM (Table1 LEFT JOIN Table2 ON Table1.field1 = Table2.field2) LEFT JOIN Table3 ON Table2.field2 = Table3.field3;
Ваше удаленное утверждение:
DELETE test1.*, test2.*, test3.*, test4.* FROM ((test1 LEFT JOIN test2 ON test2.qid = test1.id) LEFT JOIN test3 ON test3.tid = test2.id) LEFT JOIN test4.qid = test1.id) WHERE (((test1.id) = [SomeParameter]));