Несколько левое соединение в доступе - PullRequest
4 голосов
/ 21 декабря 2011

У меня есть следующий запрос, который работает для 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 ]

12 голосов
/ 21 декабря 2011

Для удаления доступа требуется звезда (*): 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}
2 голосов
/ 21 декабря 2011

Вот пример оператора выбора для трех таблиц с левыми объединениями:

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]));
...