このビットはうまく機能しています:
SELECT products_id, sum(attributes_stock)
FROM products_attributes
GROUP BY products_id
これにより、attributes_stock
列のフィールドのすべてのグループが合計されます。
私が問題を抱えているのは、この結果を取得して別のテーブルの別の列を更新することです。
これは私が持っているものです:
UPDATE products, products_attributes
SET products.products_quantity = sum(products_attributes.attributes_stock) GROUP BY products_attributes.products_id
WHERE products.products_id = products_attributes.products_id
どんなアドバイスも大歓迎です。
更新ステートメント内でgroup by
を使用することはできません。グループ化を行うには、サブ選択を使用する必要があります。
このようなもの:
UPDATE products p,( SELECT products_id, sum(attributes_stock) as mysum
FROM products_attributes GROUP BY products_id) as s
SET p.products_quantity = s.mysum
WHERE p.products_id = s.products_id
新しいスタイルを好む人もいますJOIN ... ON
syntaxの結合操作と、WHERE句のコンマ演算子および結合述語の比較:
UPDATE products p
JOIN ( SELECT q.products_id
, SUM(q.attributes_stock) AS sum_attr
FROM products_attributes q
GROUP BY q.products_id
) r
ON r.products_id = p.products_id
SET p.products_quantity = r.sum_attr
これを試して:
update
products,
(select
products_id, sum(attributes_stock) as sumAttr
from products_attributes
group by products_id) as a
set
products.products_cuantity = a.sumAttr
where
products.products_id = a.products_id