Autor Zpráva
Prkny
Profil
Zdravím,

prosím o pomoc s efektivním příkazem mysql.
V jedné tabulce mám data položek, které neustále přibývají, do druhé tabulky bych dal rád součet položek. Skript by měl UPDATOVAT stávající tabulku položky na sloupci celkovy_pocet

První tabulka (data_polozek) má strukturu
id, id_polozky, pocet
1, 556, 5
2, 332, 1
3, 556, 2
4, 123, 17
5, 556, 1

Druhá tabulka (polozky) má strukturu:
id, nazev, atd , celkovy_pocet
556, jablko, 8
332, hruška, 1
123, pomeranč, 17


Moje otázka zní: jde udělat příkaz přímo v mysql, aby to nebyla taková prasárna v php??
Napadlo mě jenom toto s pomocí PHP:
$result = mysql_query("SELECT  id_polozky, pocet FROM data_polozek");
while ($row = mysql_fetch_assoc($result)) {
  $pocet = mysql_fetch_assoc(mysql_query("SELECT celkovy_pocet FROM polozky WHERE id=$row[id_polozky]"));
  $celkovy_pocet = $pocet[celkovy_pocet] + $row[pocet];
  mysql_query("UPDATE polozky SET celkovy_pocet='$celkovy_pocet' WHERE id='$row[id_polozky]'");
}

Předem díky.
Kajman
Profil
Snad půjde něco jako
UPDATE polozky p
       LEFT JOIN (SELECT id_polozky,
                         Sum(pocet) soucet
                  FROM   data_polozek
                  GROUP  BY id_polozky) s
              ON p.id = s.id_polozky
SET    p.celkovy_pocet = Ifnull(s.soucet, 0)  

Pokud to opravdu je nutné předpočítávat, tak na to můžete použít i triggery.
Prkny
Profil
Děkuji, jako vždy jste mi poradil naprosto přesně.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0