Задавайте вопросы, мы ответим
Вы не зашли.
Добрый день.
Подскажите, пжл, как решить проблему:
Мне необходимо обновить данные в таблице, присоединив 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.
Заранее спасибо за помощь.
Неактивен
Похоже, что вам нужно
Неактивен
Вот пример на одном артикуле. Слева таблица, где обновляются данные (test), справа, откуда берутся данные(revenue).
Результат: в таблицу слева test в строку с id 420067 значение quantity должна быть внесена сумма, т.е. 7.
К сожалению, вариант с JOIN возвращает лишь значения null, скорее он вообще не проходит, т.к. "Затронуто 0 строк"
Отредактированно Irit (02.11.2024 15:35:52)
Неактивен
Замените LEFT JOIN на JOIN
Неактивен