2016-05-18 3 views
0

У меня есть таблица продаж и таблица заказов.Как обновить значение строки для одной таблицы, добавив значения строки mulitple одной таблицы?

В таблице продаж несколько строк, имеющих одинаковый идентификатор заказа.

Что мне нужно обновить сумму таблицы заказов, добавив количество таблицы продаж? , где идентификатор таблицы заказов совпадает с идентификатором заказа на продажу?

продаж таблица

ID | amount | order_id | 
---------------------------- 
1 |  100 | 1 | 
2 |  100 | 1 | 
3 |  300 | 2 | 
4 |  500 | 2 | 

заказ столика

ID | amount  
--------------------- 
1 |  0.00 
2 |  0.00 

Результат на заказ:

ID | amount  
    --------------------- 
    1 |  200.00 
    2 |  800.00 
+1

показать вашу структуру таблицы, некоторые данные примера и ожидаемый результат, пожалуйста, – vaso123

+0

благодарит @lolka_bolka за ответ. Я обновил свой вопрос в соответствии с предложением. – Tushar

ответ

0

Вы можете использовать update с join и подзапрос:

update orders o 
join (select order_id, sum(amount) amount 
     from sales 
     group by order_id) s on o.id = s.order_id 
set o.amount = s.amount 
+0

Спасибо @sgeddes. Спасите мой день. +1 один раз репутация. – Tushar

0

Если процесс будет выполнен только после того, как вы сможете архивировать его, выполнив TRUNCATE и INSERT все данные.

TRUNCATE TABLE order; 
INSERT INTO order SELECT order_id, SUM(amount) FROM sales GROUP BY order_id; 

Если вы должны хранить записи в порядке, вы можете обновить значения с новыми расчетными данными, делая решение от sgeddes.

UPDATE orders o 
INNER JOIN (SELECT order_id, SUM(amount) amount 
     FROM sales 
     GROUP BY order_id) s ON o.id = s.order_id 
SET o.amount = s.amount 

Если вы хотите сохранить обновления в течение времени, вы можете создать триггер будет выполняться каждый раз, когда запись вставляется в продажи, чтобы обновить заказы.

DELIMITER $$ 
CREATE TRIGGER order_trigger 
AFTER INSERT ON sales 
FOR EACH ROW BEGIN 

    -- HERE UPDATE/INSERT VALUES INTO ORDERS. 

END $$ 
DELIMITER ; 
+0

Спасибо Мигель. +1 – Tushar

Смежные вопросы