11

ITEMS数量とunit_price(id | name | order_id | qt | unit_price)とtableの2つのテーブルが ありますORDERS

注文の合計金額を取得するために、同じ注文をUPDATEテーブルordersに入れて発注したいと思います。orders.total_price sum of multiplications qt*unit_price

itemsテーブルのSELECTクエリは非常に単純で、同じorder_id内のすべてのアイテムの合計を与えるとうまく機能します。

SELECT SUM(items.qt*items.unit_price) from items GROUP by items.order_id

ORDERSしかし、この値をテーブルに挿入することはできません。私はこの仕事をすることができませんでした:

UPDATE orders, items SET orders.total_price = (SELECT SUM(items.qt*items.unit_price)
FROM items GROUP BY items.order_id) WHERE orders.id = items.order_id

戻ります"Subquery returns more than 1 row"

私はここで非常によく似た質問を見つけましたが、答えは私にとってもうまくいきませんでした:

UPDATE orders SET orders.t_price = (SELECT SUM(items.qt*items.unit_price) from items WHERE orders.id = items.order_id)
4

1 に答える 1

22

次の2つのテーブルUPDATEを使用できます。JOIN

UPDATE Orders o 
INNER JOIN
(
   SELECT order_id, SUM(qt * unit_price) 'sumu'
   FROM items 
   GROUP BY order_id
) i ON o.id = i.order_id
SET o.total_price = i.sumu
[WHERE predicate]
于 2012-09-23T10:05:22.563 に答える