Цитата(maxipub @ 5.10.2016, 15:29 ) | Если нужно таким образом изменять не одно, а несколько значений - это на каждое значение отдельный подзапрос делать, одним не получится? |
Да легко. Просто надо иногда заглядывать в мануал, он покажет правильный синтаксис (в частности, узнаешь, что UPDATE не знает о существовании GROUP BY). И понимать, что групповые операции быстрее итерационных, лучше сначала подготовить все данные, а потом всё сразу обновить, чем делать это по одному значению.
Цитата(maxipub @ 5.10.2016, 15:29 ) | Код | UPDATE t1 set t1.total = (select sum(t2.items * t2.price) from t2 where t1.id=t2.td), t1.shortage = (select sum((t2.orders - t2.items) * t2.price) from t2 where t1.id=t2.td)
|
|
С учётом написанного выше это будет, например, так:
Код | UPDATE t1, ( SELECT id, SUM(items*price) AS total, SUM(price*(orders-items)) AS shortage FROM t2 GROUP BY t2.id ) AS t3 SET t1.total=t3.total, t1.shortage=t3.shortage WHERE t1.id = t3.id;
|
|