У меня синтаксическая ошибка с моим запросом на обновление - PullRequest
0 голосов
/ 20 июня 2019

Я пытаюсь обновить столбец, суммируя данные из другого столбца в другой таблице, но я не понимаю, почему у меня появляется синтаксическая ошибка.

UPDATE [Reference No - Quotation] RQ
INNER JOIN [Customer- Quotation] CQ ON CQ.ReferenceID = RQ.ReferenceID
SET RQ.[Total Cost (Monthly)] =SUM(CQ.[Total Amount]) 
WHERE = RQ.[ReferenceID] = CQ.[ReferenceID];

Ответы [ 2 ]

0 голосов
/ 20 июня 2019

Использование GROUP BY, которое необходимо для SUM, делает запрос доступным только для чтения.Используйте временные таблицы или доменные функции (DSum и другие) или такой грязный взлом MS Access:

UPDATE [Reference No - Quotation] RQ
INNER JOIN [Customer- Quotation] CQ ON CQ.ReferenceID = RQ.ReferenceID
SET RQ.[Total Cost (Monthly)] = 0 
WHERE RQ.[ReferenceID] = CQ.[ReferenceID];
UPDATE [Reference No - Quotation] RQ
INNER JOIN [Customer- Quotation] CQ ON CQ.ReferenceID = RQ.ReferenceID
SET RQ.[Total Cost (Monthly)] = RQ.[Total Cost (Monthly)] + CQ.[Total Amount])
WHERE RQ.[ReferenceID] = CQ.[ReferenceID];
0 голосов
/ 20 июня 2019

Это было неправильно, из-за исправления комментариев:

Как я знаю, Access должен быть обеими таблицами, чтобы их можно было изменять, когда используется запрос UPDATE, поэтому использование INNER JOIN приводит к тому, что результаты запроса будут доступны только для чтения. В этом случае я использую временные таблицы:

  • создать временную таблицу из вашего INNER JOIN запроса
  • использовать временную таблицу в качестве источника обновлений
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...