Autor Zpráva
juneau
Profil
Mam dve tabulky, texty a komentare (id,id_textu,autor,text,...). Obe zjoinuju a pomoci group by (id_textu) dostanu v jednom sloupci id textu a v druhem pocet komentaru z druhe tabulky patrici k tomuto textu.

Jenze... dotaz mi vrati jen ty id textu, ktere maji ulozene nejaky komentar. Potreboval bych v prvnim sloupci ziskat vsechny radky z tabulky texty a k nim pocty komentaru z druhe, a pokud text nema v druhe tabulce zadny komentar, tak nulu. prijde mi, ze toho neni mozny dosahnout, ale zeptam se, nez tenhle pokus uplne vzdam.
Kajman_
Profil *
SELECT
t.*,
ifnull(count(k.id_textu),0) pocet
FROM texty.t
LEFT JOIN komentare k
ON t.id_textu=k.id_textu
GROUP BY t.id_textu
juneau
Profil
No to me podrz... dekuju moc :)
juneau
Profil
Hm, ale jedna vec: kdyz tam doplnim WHERE k.videt='1' (omezim scitani jen na odkryte komentare), ona ficurka pridavajici nekomentovanym textum pocet komentaru nula prestane pracovat. chybu to nevyhodi, ale nekomentovany text se ve vysledku neobjevi.

SELECT t.id id_textu, ifnull( count( k.id_textu ) , 0 ) sum
FROM web_texty t
LEFT JOIN web_komentare k ON t.id = k.id_textu
WHERE videt = '1'
GROUP BY t.id
ORDER BY t.id DESC

id_textu | sum
107 | 140
106 | 10
...

pri dotazu bez where je na prvnim radku : 108 | 0 .....
Kajman_
Profil *
Tahle podmínka musí být v tom left joinu

SELECT t.id id_textu, ifnull( count( k.id_textu ) , 0 ) sum
FROM web_texty t
LEFT JOIN web_komentare k ON t.id = k.id_textu AND videt = '1'
GROUP BY t.id
ORDER BY t.id DESC
juneau
Profil
Me to sql neprestane ani po x (laickych) letech prekvapovat. Jeste jednou dekuji :)
Toto téma je uzamčeno. Odpověď nelze zaslat.

0