Autor Zpráva
nowis
Profil *
Zdravím. Jsem v PHP a MySQL téměř nováček. Chci si udělat v PHP takovou aplikaci, kde bych si evidoval zakázky. V tuto chvíli to mám v Excelu, kde seřadím zakázky dle klienta a pod každou skupinou se mi napíše mezisoučet. Tzn. např:

Zakázka1 | Telefonica | 10.000
Zakázka3 | Telefonica | 15.000
Zakázka5 | Telefonica | 18.000
Celkem Telefonica 43.000

Zakázka2 | ČEZ | 12.000
Zakázka4 | ČEZ | 18.000
Celkem ČEZ 30.000

Zatím mám vypsaný obsah tabulky pomocí MySQL_Fetch_Array a je to ve formě "každá zakázka je jeden řádek"

Poradíte mi prosím, jak bych měl postupovat dále?
Tori
Profil
nowis:
Koukněte na seskupování výsledků (GROUP BY WITH ROLLUP).
nowis
Profil *
No, myslím, že to není ono. Já chtěl, aby se to napsalo přímo pod ty setříděné řádky, tedy tak, jak jsem uvedl v původním příspěvku. Tady to napíše pod sebe jen všechny mezisoučty. Nebo to špatně chápu?
Kajman_
Profil *
nowis:
Použijte v seznamů sloupců v group by i zakázku, pak tam budou i netučné řádky. Také záleží na pořadí sloupců, stačí si s tím pohrát.
nowis
Profil *
Kajman:
Cítím se ponížen :-)

Díky, takhle jsem si to vybájil ale nepředstavoval jsem si, že to půjde takhle jednoduše. Vymýšlel jsem šílené PHP konstrukce a ani mně nenapadlo, že to půjde jedním dotazem.

Opravdu moc děkuji. Bohužel na tuto situaci sedí, že "chytrému napověz, hloupého trkni" a není těžké odvodit kdo je kdo :-)
nowis
Profil *
hmm, tak nevím, jestli jsem se neradoval předčasně. Dotaz mi sice vyjel v dobře, ale když to šoupnu do PHP, tak se mi místo mezisoučtů napíše jen poslední hodnota, tedy z mého prvního případu by to bylo "Celkem Telefonica 18.000 a Celkem ČEZ 18.000" :-(

Mohli byste mně prosím ještě nakopnout?
Kajman_
Profil *
To je divné, že by se naprosto stejný dotaz choval v php a přímo v sql nástroji jinak. Ukažte dotaz, který jste v php použil. Případně i jeho zpracování, nejste-li si jistý korektností.
Tori
Profil
nowis:
Neukládáte to do pole, kde klíčem je ID zakázky? V těch mezisoučtech je v některých polích NULL, takže se možná přepisuje hodnota jednoho prvku.
nowis
Profil *
...už vím proč, ale pořád nevím jak z toho ven. Nefunguje to ani jako dotaz (tedy ne jen v PHP)

u každého toho řádku s názvem zakázky jsou totiž další buňky, které ty zakázky blíže specifikují, např, v jaké jsou fázi, kdo na nich spolupracuje... A já ty buňky které chci zobrazovat vrazil do SELECT, což je asi špatně.

Asi by bylo lepší vložit sam ten dotaz, který používám:

Tento dotaz dělá mezisoučty tak jak má. Ale NEZOBRAZUJE všechny buňky, které tam potřebuji vidět:
SELECT `Prodejce` , SUM( `Rozpocet` )
FROM obchodnidenik
GROUP BY Prodejce, Zakazka
WITH ROLLUP

Tento dotaz dělá mezisoučty špatně. Ale ZOBRAZUJE všechny buňky, které tam potřebuji vidět:
SELECT `Prodejce` , `Zakaznik` , `Zakazka` , `DatumZadani` , `Rozpocet` , `Faze`, `Spoluprace`, SUM( `Rozpocet` )
FROM obchodnidenik
GROUP BY Prodejce, Zakazka
WITH ROLLUP
Kajman_
Profil *
Zkuste třeba min(`Zakaznik`) atp., s tím, že u součtů za prodejce tyhle sloupce nevypisujte.
nowis
Profil *
tak už jsem to našel. Správně je ten druhý dotaz, akorát tam mám navíc pole 'Rozpocet' a pak na konci, SUM('Rozpocet')

Díky za váš čas

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