У меня есть две таблицы: MySQLОбъединение двух запросов MySQL (SELECT и UPDATE) в одну
- таблица называется
rawmats
, который хранит количество некоторых видов сырья; - другой, называемый
stock_changes
хранения событий, когда запас определенного материала изменяется (количество дельты сохраняется, связанное с идентификатором материала).
Мне нужно сделать запрос MySQL для того, чтобы отменить все изменения, хранящиеся в stock_changes
таблицы, к фактическому запасу, хранящемуся в rawmats
.
В настоящее время, следующий код PHP делает это хорошо:
$stock_changes_req = $db->prepare('SELECT rawmat_id, delta FROM stock_changes');
$stock_update_req = $db->prepare('UPDATE rawmats SET stock = stock - :delta WHERE id=:rawmat_id');
$stock_changes_req->execute();
$stock_changes = $stock_changes_req->fetchAll(PDO::FETCH_ASSOC);
foreach ($stock_changes as $stock_change)
$stock_update_req->execute($stock_change);
Есть два вопроса по этому поводу:
- Можно ли объединить эти два запроса (и цикл PHP) в один большой запрос mysql? Я думаю, было бы лучше, если бы он был закодирован таким образом
- Если возможно слияние, было бы выгодно с точки зрения производительности? Я лично так думаю, потому что он заменит два запроса mysql и петлю php только на один большой запрос mysql. Если прирост производительности будет только небольшим, тогда мой вопрос не будет интересовать меня.
Sql, как это для меня : трудно найти правильный путь, но так очевидно, когда вы можете увидеть решение ... Кстати, вы неправильно использовали псевдоним table2 (t1 вместо t2). много thx – yolenoyer