Autor | Zpráva | ||
---|---|---|---|
H13 Profil |
#1 · Zasláno: 8. 7. 2008, 22:29:07
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 |
#2 · Zasláno: 8. 7. 2008, 23:11:16
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 |
#4 · Zasláno: 9. 7. 2008, 21:07:21 · Upravil/a: H13
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 * |
#5 · Zasláno: 9. 7. 2008, 22:58:38
H13
A vypisuje Vám to kategorie, která mají třeba jednu jedinou položku, ale ta není publikovaná? |
||
H13 Profil |
#6 · Zasláno: 9. 7. 2008, 23:16:05
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... |
||
Časová prodleva: 16 let
|
0