SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 02.11.2024 14:32:22

Irit
Участник
Зарегистрирован: 25.09.2024
Сообщений: 5

Не работает функция SUM в UPDATE. Прошу помощи

Добрый день.
Подскажите, пжл, как решить проблему:
Мне необходимо обновить данные в таблице, присоединив 2ю таблицу
"UPDATE test  as t
LEFT JOIN revenue  as r  ON
        r.article = t.article
    AND t.date = r.date AND
        t.subdivision_two = r.subdivision_two
SET t.rd_quantity = (SELECT SUM(r2.quantity) as rd_quantity FROM revenue  AS r2 WHERE r2.article = t.article
      AND r2.date = t.date and r2.subdivision_two = t.subdivision_two GROUP BY r2.article, r2.date, r2.subdivision_two)"

Однако UPDATE возвращает не сумму quantity, а одно из значений.

Нюансы в том, что:
1. Данные из 2й таблица должны присоединяться к 1й при соответствии одновременно  и article, и date, и subdivision_two, т.к. для одного и того же article и date может быть разное значение subdivision_two
2. Для одного и того же article в один и тот же date может быть разные subdivision_two, а по ним могут быть разные quantity.
Например: article ABC, date = '2024-11-02', subdivision_two = 'QQ' со значениями 1 (первая строка) и 2 (вторая строка), subdivision_two = 'WW' со значениями 3 (первая строка) и 10 (вторая строка). Результат должен быть: article ABC, date = '2024-11-02', subdivision_two = 'QQ', quantity = 3; article ABC, date = '2024-11-02', subdivision_two = 'QQ', quantity = 13.

Заранее спасибо за помощь.

Неактивен

 

#2 02.11.2024 14:51:56

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Не работает функция SUM в UPDATE. Прошу помощи

Похоже, что вам нужно

UPDATE test  as t
LEFT JOIN ((SELECT r2.article, r2.date, r2.subdivision_two, SUM(r2.quantity) as rd_quantity FROM revenue  AS r2 GROUP BY r2.article, r2.date, r2.subdivision_two)
)  as r  ON
        r.article = t.article
    AND t.date = r.date AND
        t.subdivision_two = r.subdivision_two
SET t.rd_quantity = r.rd_quantity



Если нет, то сделайте пример на несколько строк в виде create table.. и insert into.. для таблиц test и revenue и какой результат должен получиться.

Неактивен

 

#3 02.11.2024 15:22:56

Irit
Участник
Зарегистрирован: 25.09.2024
Сообщений: 5

Re: Не работает функция SUM в UPDATE. Прошу помощи

Вот пример на одном артикуле. Слева таблица, где обновляются данные (test), справа, откуда берутся данные(revenue).
Результат: в таблицу слева test в строку с id 420067 значение quantity должна быть внесена сумма, т.е. 7.
К сожалению, вариант с JOIN возвращает лишь значения null, скорее он вообще не проходит, т.к. "Затронуто 0 строк"

Отредактированно Irit (02.11.2024 15:35:52)


Прикрепленные файлы:
Attachment Icon 3.jpg, Размер: 70,733 байт, Скачано: 14

Неактивен

 

#4 02.11.2024 15:42:52

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Не работает функция SUM в UPDATE. Прошу помощи

Замените LEFT JOIN на JOIN

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson