Обновление заявления Sql Доступ к Double Inner join - PullRequest
2 голосов
/ 20 февраля 2020

У меня есть следующая команда

UPDATE tbl1
SET tbl1.val = 7
FROM ((tbl3 INNER JOIN tbl2 ON tbl3.ID = tbl2.ID) 
INNER JOIN tbl1 ON tbl1.ID = tbl2.ID) 
WHERE tbl3.ID = 2
AND tbl1.val = [val];

Внутренние соединения работают так, как я их использую в другом месте. Тем не менее, я получаю следующую ошибку

"Синтаксическая ошибка (отсутствует оператор) в выражении запроса"

У меня было это раньше, и оказалось, что это скобки, потому что доступ смешно. Однако мне не удалось выяснить это.

Ответы [ 2 ]

1 голос
/ 21 февраля 2020

В качестве альтернативы, MS Access поддерживает UPDATE ... JOIN (аналогично MySQL / MariaDB). Просто замените FROM на UPDATE и перейдите к первому предложению:

UPDATE ((tbl3 INNER JOIN tbl2 ON tbl3.ID = tbl2.ID) 
INNER JOIN tbl1 ON tbl1.ID = tbl2.ID) 
SET tbl1.val = 7
WHERE tbl3.ID = 2
  AND tbl1.val = [val];
1 голос
/ 20 февраля 2020

Вы должны быть в состоянии использовать exists:

UPDATE tbl1
SET tbl1.val = 7
WHERE EXISTS (SELECT 1
              FROM tbl3 INNER JOIN
                   tbl2 ON tbl3.ID = tbl2.ID
              WHERE tbl1.ID = tbl2.ID AND 
                    tbl3.ID = 2
             ) AND
      tbl1.val = [val];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...