Autor | Zpráva | ||
---|---|---|---|
juneau Profil |
#1 · Zasláno: 18. 3. 2006, 18:49:19
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 * |
#2 · Zasláno: 18. 3. 2006, 19:06:03
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 |
#3 · Zasláno: 18. 3. 2006, 19:10:13
No to me podrz... dekuju moc :)
|
||
juneau Profil |
#4 · Zasláno: 18. 3. 2006, 19:27:05
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 * |
#5 · Zasláno: 18. 3. 2006, 20:11:15
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 |
#6 · Zasláno: 18. 3. 2006, 20:18:11
Me to sql neprestane ani po x (laickych) letech prekvapovat. Jeste jednou dekuji :)
|
||
Časová prodleva: 18 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0