Mysql Update с объединениями таблиц - обновить поле одной таблицы с суммой поля другой таблицы - PullRequest
1 голос
/ 18 ноября 2010

У меня есть две таблицы Orders и Order_Details Поле Order_Details таблиц *1003* действует как внешний ключ к id_order таблицам Orders таблиц.

Я хочу обновить поле price_total таблицы Orders с суммированием цен из таблицы Order_Details.

Я попытался выполнить следующий запрос, но не смог: -

Update Orders, Order_Details
  SET  Orders.price_total = sum(Order_Details.price)
 WHERE Orders.price_total=0
 GROUP BY Order_Details.id_order

Ошибка -

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'GROUP BY Order_Details.id_order' at line 4

Как это сделать за один запрос?

Спасибо

1 Ответ

4 голосов
/ 18 ноября 2010

Вы можете упростить его до

Update Orders 
SET Orders.price_total = 
(
  SELECT 
    sum(Order_Details.price) 
  FROM Order_Details 
  WHERE 
    Orders.id_order=Order_Details.order_id
)
WHERE Orders.price_total=0;

обновлено для группировки

Update Orders, Order_Details
  SET Orders.price_total = sum(Order_Details.price)
WHERE 
  Orders.price_total=0 AND
  Orders.id_order=Order_Details.order_id    
GROUP BY Order_Details.id_order

...