2010-11-18 84 views
1

的總和場我有兩個表OrdersOrder_Details Order_Details表的order_id場作爲外鍵Orders表的id_order表。mysql的更新與表連接 - 更新一個表與其他表的字段

我想更新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 

如何做一個查詢?

感謝

+0

你沒有speciy其列訂單鏈接Order_Details.id_order – ajreal 2010-11-18 07:22:12

+0

@ajreal - 'Order_Details'表的'order_id'字段充當'Orders'表的'id_order'表的外鍵。在排隊中應用更正 – 2010-11-18 07:25:33

回答

4

你可以把它簡化爲

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 

+0

謝謝我今天也在努力處理子查詢方法。 :)無論如何,請回答您是否可以更正加入和分組方法。 – 2010-11-18 07:46:28

+0

仍然收到相同的錯誤'#1064 - 你的SQL語法錯誤;檢查與您的MySQL服務器版本相對應的手冊,以便在第6行'GROUP BY Order_Details.id_order'附近使用正確的語法。 – 2010-11-18 10:44:52

+0

@sandeepan - group by不能與更新一起使用,對於錯誤信息抱歉 – ajreal 2010-11-18 10:58:09