0
我有兩個MySQL表:合併兩個MySQL的請求(SELECT和UPDATE)爲一個
- 的表中調用
rawmats
存儲部分原料的數量; - 另一個稱爲
stock_changes
的存儲事件,當某種物料的庫存正在變化時(增量數量被存儲,與物料ID綁定)。
我需要以撤消存儲在stock_changes
表,存儲在rawmats
的實際庫存的所有更改的MySQL的請求。
目前,下面的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