MySQL upit listanje kategorija i brojanje oglasa


#1

Ako moze neko da baci pogled na kod, verovatno je nekom jednostavno ko ima mnogo vise iskustva.
Naime, hteo bih da mi izlista sve kategorije i da prrebroji koliko ima oglasa za svaku kategoriju, ali da mi prikaze i kategorije za koje ne postoji nijedan oglas.
Ovim upitom dobijam listu kategorija sa brojem oglasa, ali samo one kategorije za koje postoje oglasi.
Znaci, hocu sve kategorije da mi izlista, i one sa oglasima i one bez oglasa, a ne polazi mi za rukom.

SELECT *, o.kategorija, k.id as id, k.naziv as naziv COUNT( o.id ) AS total
     FROM `kategorije` `k`
LEFT JOIN `oglasi` `o`
       ON `o`.`kategorija` = `k`.`id` WHERE o.akt='Y'
   GROUP BY k.naziv ORDER BY naziv ASC

Hvala!


#2

Probaj RIGHT JOIN…


#3

Ni left ni right - samo join.


#4

Ovako radi, pronasao sam. Mora se o.akt=‘Y’ prebaciti gore, u ON delu gde se poziva tabela oglasi. Da napomenem da sam izostavio jos jedan uslov k.id_parent=0, ali on nema nekog posebnog znacaja, sem da se napomene da ostaje u WHERE delu:

SELECT *, o.kategorija, k.id as id, k.naziv as naziv COUNT( o.id ) AS total
     FROM `kategorije` `k`
LEFT JOIN `oglasi` `o`
       ON (`o`.`kategorija` = `k`.`id` AND o.akt='Y')  
 WHERE k.id_parent=0
       GROUP BY k.naziv ORDER BY naziv ASC

#5

Čisto predostrožnosti radi, COUNT(o.kategorija) AS total gdje si tad siguran da postoji poveznica.
Trebalo bi da je rezultat isti.