Autor Zpráva
Misha
Profil *
Zdravím, potřebuji zjistit počet objednaných položek, které byly objednány v určitém časovém rozmezí a jedná se o daný typ produktu.
Mám 3 tabulky:

Tabulka produkty
+----+-------+-----+
| id | nazev | typ |
+----+-------+-----+
|  1 | víno  |  1  |
+----+-------+-----+
|  2 | rum   |  0  |
+----+-------+-----+

Tabulka kosik
+----+---------+-------+------------+
| id | produkt | pocet | objednavka |
+----+---------+-------+------------+
|  1 |    1    |   3   |      1     |
+----+---------+-------+------------+
|  2 |    2    |   1   |      1     |
+----+---------+-------+------------+
|  3 |    2    |   2   |      2     |
+----+---------+-------+------------+
|  4 |    1    |   1   |      3     |
+----+---------+-------+------------+

Tabulka objednavky
+----+----------+----------+
| id |   datum  |   stav   |
+----+----------+----------+
|  1 |2011-05-02|Dokončeno |
+----+----------+----------+
|  2 |2013-03-08|Dokončeno |
+----+----------+----------+
|  3 |2013-05-22|Stornováno|
+----+----------+----------+

Každá tabulka má více řádků i sloupců, ale dal jsem sem jen to potřebné. K tomu mám MySQL dotaz, který ovšem nevypíše součet všech produktů. Z každé objednávky vezme pouze jeden produkt a zjistí jeho počet. Já bych potřeboval aby spočítal všechny. Jak bych v takovém případě mohl tabulky sloučit?

SELECT SUM(`kosik`.`pocet`) FROM `kosik`, `objednavky`, `produkty` WHERE (`objednavky`.`datum`>'2013-01-01' && `objednavky`.`datum`<'2013-12-31' && `objednavky`.`id`=`kosik`.`objednavka` && `produkty`.`id`=`kosik`.`produkt` && `produkty`.`typ`>0);
Kajman
Profil
Použijte group by
SELECT `kosik`.`produkt`,
       Sum(`kosik`.`pocet`) soucet
FROM   `objednavky`
       JOIN `kosik`
         ON `objednavky`.`id` = `kosik`.`objednavka`
       JOIN `produkty`
         ON `produkty`.`id` = `kosik`.`produkt`
WHERE  `produkty`.`typ` > 0
       AND `objednavky`.`datum` >= '2013-01-01'
       AND `objednavky`.`datum` <= '2013-12-31'
GROUP  BY `kosik`.`produkt`
Misha
Profil *
Díky za radu, ovšem v praxi to počítá i řádky, které nesplňují datumovou podmínku. produkty.typ to bere, ale objednavky.datum už ne.


Tak jinak, datumovou podmínku to bere. Ale něco je špatně, protože mi to vyhazuje hrozně malou hodnotu (15). Mělo by to být něco okolo 10 000. Jenom nemohu přejít na to čemu by ta hodnota mohla odpovídat.
Misha
Profil *
Tak už vím co to znamená. Je to počet kolik kusů daného produktu bylo v daném období zakoupeno. Jenže tenhle výpis bude mít mnohem více řádků (každý produkt na jednom) a já potřebuji sečíst všechny. Musím to udělat tak, že všechny vypíšu a sečtu pomocí PHP, nebo to jde i přímo aby mi to sečetlo MySQL?
Misha
Profil *
Zkusil jsem to tedy vypsat a výsledek je stejný jako můj příkaz v prvním příspěvku. Takže tohle není to pravé.
Kajman
Profil
Pokud se má sečít vše, nedávejte group by a nevypisujde id produktu, jen sum.

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