Обновление MYSQL с использованием результата sum () для нескольких таблиц

Эти бит отлично работают:

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 

Любые советы очень оценили.

Related of "Обновление MYSQL с использованием результата sum () для нескольких таблиц"

Вы не можете использовать 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 нового типа для операции соединения, а также оператор запятой и предикат соединения в предложении 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