Autor Zpráva
H13
Profil
Ahoj, potřeboval bych poradit, mám dotaz, který zobrazí data kategorií a zároveň vrátí počet položek v kategorii

SELECT kat.*, pol.catid, COUNT(pol.id) AS pocet_polozek
FROM kategorie AS kat
LEFT JOIN polozky AS pol ON pol.catid = kat.id


Když to nechám takto, dostanu všechny kategorie (i prázdné), ale chybný počet položek, protože nejsou ošetřeny položky který jsou nepublikovaný. Když přidám:
AND pol.publikovana = 1

pak dostanu správný počet položek (nebudou počítány nepublikované položky), jenže zase nedostanu prázdné kategorie (protože prázdné kategorie nespluňuji podmínku AND pol.publikovana)

Díky za jakýkoliv nakopnutí
souki
Profil
AND (pol.publikovana = 1 OR pol.id is null) ?
Kajman_
Profil *
Ta podmínka nemá být ve where ale u left joinu
LEFT JOIN polozky AS pol ON pol.catid = kat.id and pol.publikovana = 1
Jinak se se ani skoukově verzi nevypíší kategorie, co mají nenulový počet položek, ale žádná z nich není publikovaná.

A nechybí tam náhodou group by kat.id ?
H13
Profil
AND (pol.publikovana = 1 OR pol.id is null)
FUNGUJE

pořád jsem tam strkal AND ( pol.publikovana = 1 OR pol.publikovana = '') což nefungovalo ale toto funguje AND ( pol.publikovana = 1 OR pol.id is null)

problém je vyřešen


Díky moc
Kajman_
Profil *
H13
A vypisuje Vám to kategorie, která mají třeba jednu jedinou položku, ale ta není publikovaná?
H13
Profil
nefunguje :-( ... jinak zapomněl jsem dodat, že GROUP BY kat.id tam je

Takže jsem dal pryč:
AND ( pol.publikovana = 1 OR pol.id is null)

a přidal:
LEFT JOIN polozky AS pol ON pol.catid = kat.id and pol.publikovana = 1

A teď to jede i s kategorií, která má jednu položku, která není publikována...

Díky moc ... smekám, přemýšlet nad cizím problémem a vyhodnocovat různý varianty ... ještě jednou díky...

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: