Autor Zpráva
hrouda
Profil
Zdravím,

chci se prsoím zeptat jakým dotazem se zeptat, když chci zjistit kolik kategorii ma jedno zbozi a kolik zbozi ma jedna kategorie.

Mam 3 tabulky:
1.zbozi
2.kategorie
3.zbozi_kategorie

select zbozi.nazev, kategorie.nazev AS 'category' from 
zbozi join zbozi_kategorie on zbozi.id = zbozi_kategorie.id_zbozi 
join kategorie on zbozi_kategorie.id_kategorie = kategorie.id 

Zkoušel sem toto, ale vrací prázdnou hodnotu
Kajman
Profil
Něco jako
SELECT zbozi.nazev,
       Count(DISTINCT zk.id_kategorie) kategorii
FROM   zbozi
       LEFT JOIN zbozi_kategorie zk
              ON zbozi.id = zk.id_zbozi
GROUP  BY zbozi.id,
          zbozi.nazev

Kdy místo group by sekce můžete dát where omezení, pokud počet kategorií nechcete počítat pro všechno zboží, ale jen pro jedno konkrétní dle id.

Počet zboží v kategoriích bude téměř to stejné, ale musíte udělat druhý dotaz. Nesnažte se to cpát do jednoho.
hrouda
Profil
Díky moc, a co znamená to zk ? :-)


nazev zbozi
Tricka 0
Ponozky 0
Bundy 0
Boty 0
Panské 0
Dámské 0
Dlouhé 0
Krátké 0
Dlouhé 0
Krátké 0
Jarní 0
Letní 0
Podzimní 0
Zimní 0
Letní 0
Zimní 0
Pánské 0
Dámské 0
Pro děti 0
Pánské 0
Dámské 0
Pro děti 0
Papuče 0
Gumáky 0
Tenisky 0

Toto me to vypíše, proč to vypisuje 0 ve sloupci zbozi ?
Kajman
Profil
hrouda:
proč to vypisuje 0 ve sloupci zbozi ?
Težko říct, asi jste dotaz špatně upravil. Původní žádný sloupec zbozi nevytvářel.

zk je jen alias pro tabulku zbozi_kategorie v rámci toho jednoho dotazu. To aby se s ní mohlo pracovat s kratším identifikátorem.
hrouda
Profil
v tabulce zbozi je - id, nazev, popis, cena, img, kategorie...v tabulce kategorie je- id, nazev, url, id_nadkategorie..a treti tabulka zbozi_kategorie je - id, id_zbozi a id_kategorie..

Už se s tím peru od ráno a začíná mě to vytáčet :-(
Kajman
Profil
Pokud tam máte data, bude chyba v dotaze. Pokud ho sem nedáte, těžko může někdo poradit.
hrouda
Profil
SELECT * FROM zbozi JOIN zbozi_kategorie ON zbozi.id = zbozi_kategorie.id_zbozi JOIN kategorie ON zbozi_kategorie.id_kategorie = kategorie.id ORDER BY RAND() LIMIT 1
Kajman
Profil
Dotaz z [#7] jistě nevrací výsledek zmíněný v [#3]

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: