Autor | Zpráva | ||
---|---|---|---|
Stepanka Profil * |
#1 · Zasláno: 13. 9. 2008, 10:26:25
Zdravím všechny,
prosím, neporadil by mi někdo ohledně jednoho dotazu? Vypadá takto: $query_vse = "SELECT s.*, COUNT(op.id_produkt) AS pocet_adresatu, p.id_sk AS id_sk FROM skupiny s LEFT JOIN produkty p ON s.id = p.id_sk LEFT JOIN objednavky_polozky op ON p.id = op.id_produkt LEFT JOIN objednavky o ON op.id_objednavka = o.id_objednavka LEFT JOIN zakaznici z ON o.id_zakaznik = z.id WHERE s.aktivni != '0' AND s.web = '".$_GET['eshop']."' AND o.jazyk = '".$_GET['lang']."' GROUP BY s.nadpis_cz"; a funguje dobře až na jednu věc. Vypisuje mi pouze ty řádky, kde je pocet_adresatu nenulový. Ale já bych potřebovala vypsat všechny. Vypisuje mi nadpisy skupin a počty adresátů třeba takto: Multimédia 3 TV Tunery / Přijímače 15 ale správně by měl vypsat toto: Multimédia 3 TV Tunery / Přijímače 15 DVD / DivX přehrávače 0 Příslušenství, Kabely, atd. 0 Bazar 0 Nevíte někdo proč to dělá? Předem moc děkuju za jakékoliv rady |
||
Kajman_ Profil * |
#2 · Zasláno: 13. 9. 2008, 10:43:48
Nevíte někdo proč to dělá?
Ta podmínka na objedvávky ve where musí být v on u left joinu. Null nebude nikdy rovno $_GET['lang']. $query_vse = "SELECT s.*, COUNT(op.id_produkt) AS pocet_adresatu, p.id_sk AS id_sk FROM skupiny s LEFT JOIN produkty p ON s.id = p.id_sk LEFT JOIN objednavky_polozky op ON p.id = op.id_produkt LEFT JOIN objednavky o ON op.id_objednavka = o.id_objednavka AND o.jazyk = '".$_GET['lang']."' LEFT JOIN zakaznici z ON o.id_zakaznik = z.id WHERE s.aktivni != '0' AND s.web = '".$_GET['eshop']."' GROUP BY s.nadpis_cz"; |
||
Stepanka Profil * |
#3 · Zasláno: 13. 9. 2008, 10:54:14
Kajman_
Děkuji moc za radu. Nulové položky to sice zobrazuje, ale tu hodnotu $_GET['lang'] to nebere v úvahu. Když je nastaveno $_GET['lang'] na "cz", zobrazí mi to úplně stejné řádky a stejné počty adresátů jako když je nastaveno $_GET['lang'] na "en". A to dělat nesmí. Českých objednávek je mnohem více než anglických, ty čísla se musí lišit. Nevíš kde by mohla být ještě chyba? Jinak ale každopádně mockrát děkuji. |
||
Kajman_ Profil * |
#4 · Zasláno: 13. 9. 2008, 11:16:15
A jaké počty to dává? Vždy anglické, vždy české, součet obojeho?
|
||
Stepanka Profil * |
#5 · Zasláno: 13. 9. 2008, 11:22:15
Kajman_
Nejspíš obojího. Chová se to, jako by tam ten kousek "AND o.jazyk = '".$_GET['lang']."'" vůbec nebyl. Když ho vymažu, vyhodí to stejné výsledky, jako když tam ten daný kousek kódu přidám. |
||
Stepanka Profil * |
#6 · Zasláno: 13. 9. 2008, 11:37:00
Jo, určitě obojího.. Protože sloupec "web" je i u produktů a když ten dotaz změním takto (udělám s GET['eshop'] to samé jako s GET['lang']):
SELECT s.*, COUNT(op.id_produkt) AS pocet_adresatu, p.id_sk AS id_sk FROM skupiny s LEFT JOIN produkty p ON s.id = p.id_sk AND p.web = '".$_GET['eshop']."' LEFT JOIN objednavky_polozky op ON p.id = op.id_produkt LEFT JOIN objednavky o ON op.id_objednavka = o.id_objednavka AND o.jazyk = '".$_GET['lang']."' LEFT JOIN zakaznici z ON o.id_zakaznik = z.id WHERE s.aktivni != '0' GROUP BY s.nadpis_cz"; tak mi to vypíše všechny nadpisy, které tu existují. Prostě jako kdyby tam ta nová podmínka AND nebyla.. |
||
Kajman_ Profil * |
#7 · Zasláno: 13. 9. 2008, 11:37:34
Jste si jistá tímto
COUNT(op.id_produkt) AS pocet_adresatu ?? Na tenhle count nemá tabulka objednavky přeci žádný vliv. |
||
Stepanka Profil * |
#8 · Zasláno: 13. 9. 2008, 11:50:03
No jistá si nejsem, ale myslela jsem, že tabulka objednavky na to mít vliv bude, když se tam připojí JOINem.. Ale asi opravdu nemá.
Dala jsem místo COUNT(op.id_produkt) AS pocet_adresatu tohle: COUNT(o.id_objednavka) AS pocet_adresatu a zatím se zdá, že to funguje dobře. Tak zatím mockrát děkuju. |
||
Časová prodleva: 16 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0