Autor | Zpráva | ||
---|---|---|---|
Petr Ká Profil |
Ahoj,
potřeboval bych poradit s UPDATE skladových zásob v databázi na základě selectu. Vím, že v tom UPDATU lze data naJOINnovat a ušetřil bych hodně zbytečných dotazů přes forech, jen mi není moc jasné jak... PHP funce, kterou bych potřeboval zoptimalizovat: <?php function sklad($db, $uid, $product_id,$pocet=1){ $receptura = $db->execute("SELECT * FROM sklad_receptura WHERE user_id='$uid' AND product_id='$product_id'")->getArray(); $insert = array(); foreach($receptura as $r){ $insert[]="('$r[sklad_id]','$uid', '".time()."',($r[pocet] * $pocet * -1))"; $db->execute("UPDATE sklad_zasoby SET stav=(stav-($r[pocet] * $pocet)) WHERE id=$r[sklad_id] AND user_id='$uid'"); } $db->execute("INSERT INTO sklad_pohyby (sklad_id, user_id, time, pocet) VALUES ".implode(", ",$insert)); } ?> |
||
Kajman Profil |
#2 · Zasláno: 5. 11. 2013, 12:32:54
Snad půjde něco takového...
UPDATE sklad_zasoby z JOIN sklad_receptura ON z.id = r.sklad_id AND z.user_id = r.user_id SET z.stav = z.stav - ( r.pocet * $pocet ) WHERE r.user_id = $uid AND r.product_id = $product_id; INSERT INTO sklad_pohyby (sklad_id, user_id, time, pocet) SELECT sklad_id, user_id, Now(), # nebo dosadit výsledek time() pocet * $pocet * -1 FROM sklad_receptura WHERE user_id = $uid AND product_id = $product_id |
||
Radek9 Profil |
#3 · Zasláno: 5. 11. 2013, 14:24:01
Kajman:
Na druhém řádku ti ještě chybí r .
|
||
Časová prodleva: 10 let
|
0