Как изменить поле столбца из таблицы с помощью объединений в MS ACCESS? - PullRequest
0 голосов
/ 21 февраля 2012

Хорошо, у меня было очень долгое исследование по этой проблеме, и я не могу получить ответ, поэтому я надеюсь, что вы можете помочь:)

Проблема:

Когда я использую этот sqlзапрос в Access:

SELECT PARTNERI.SIFRA, Sum(FAKTURE.ZA_UPLATU)-Sum(UPLATEF.IZNOS) + SUM(PARTNERI.DUGUJE)
FROM ((UPLATEF RIGHT JOIN PARTNERI ON UPLATEF.SIFRA = PARTNERI.SIFRA) LEFT JOIN FAKTURE ON PARTNERI.SIFRA = FAKTURE.S_KUP)
GROUP BY PARTNERI.SIFRA;

Я получаю набор результатов, и это нормально, но ... Я хочу обновить столбец из таблицы PARTNERI, и я написал это:

UPDATE PARTNERI SET NG_DUGUJE_DOB = 
SELECT Sum(FAKTURE.ZA_UPLATU)-Sum(UPLATEF.IZNOS) + SUM(PARTNERI.DUGUJE)
FROM ((UPLATEF RIGHT JOIN PARTNERI ON UPLATEF.SIFRA = PARTNERI.SIFRA) LEFT JOIN FAKTURE ON PARTNERI.SIFRA = FAKTURE.S_KUP)

;

И я получаю синтаксическую ошибку ... Я не знаю, что делать ... Если вы знаете ответ, пожалуйста, дайте мне знать ... PS Я начинаю использовать SQL ... Спасибо:)

Редактировать:

Хорошо, я кое-что попробовал и написал это:

   UPDATE PARTNERI SET PARTNERI.NG_DUGUJE_DOB = 
(SELECT Sum(FAKTURE.ZA_UPLATU)-Sum(UPLATEF.IZNOS) + SUM(PARTNERI.DUGUJE)
FROM ((UPLATEF RIGHT JOIN PARTNERI ON UPLATEF.SIFRA = PARTNERI.SIFRA) LEFT JOIN FAKTURE ON PARTNERI.SIFRA = FAKTURE.S_KUP))

... на этот раз я получил эту ошибку:

Операция должна использовать обновляемый запрос.

РЕДАКТИРОВАТЬ:

Мне удалось решить проблему с помощью функции DSum, которую вы, ребята, сказали мне, и она прекрасно работает!

Большое спасибо за ваши ответы, я очень благодарен за вашу помощь!:)

Ответы [ 2 ]

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

Это известное ограничение ядра СУБД Access: как бы странно это ни звучало, оно не может UPDATE использовать запрос, включающий суммирование (агрегат), даже при использовании собственного проприетарного синтаксиса, и не существует «чистого SQL» Обходной путь:

Справка и поддержка Microsoft: запрос на обновление на основе итоговых сбоев запроса

Я официально заявляю, что синтаксис Access UPDATE является его худшим провалом.

0 голосов
/ 21 февраля 2012

Попробуйте сделать это так:

UPDATE  (PARTNERI LEFT JOIN UPLATEF ON UPLATEF.SIFRA = PARTNERI.SIFRA) LEFT JOIN FAKTURE ON PARTNERI.SIFRA = FAKTURE.S_KUP SET PARTNERI.NG_DUGUJE_DOB = Sum(FAKTURE.ZA_UPLATU)-Sum(UPLATEF.IZNOS) + SUM(PARTNERI.DUGUJE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...