Autor | Zpráva | ||
---|---|---|---|
sql Profil * |
#1 · Zasláno: 14. 2. 2009, 15:41:20
Dobrý den,
mám 3 tabulky týkající se ankety: ankety -id -anketa odpovedi -id -anketa_id -odpoved a hlasy -id -autor_id (id toho co kliknul) -anketa_id -odpoved_id a chtěl bych vypsat anketu s odpověďmi a u každé odpovědi by byl počet hlasů. Zatím jsem sesmolil něco jako (koncept): SELECT ankety.id, ankety.anketa, odpovedi.odpoved, odpovedi.id FROM ankety LEFT JOIN odpovedi ON ankety.id = odpovedi.anketa_id LEFT JOIN hlasy ON ankety.id = hlasy.anketa_id ale vypisuje mi to zbytecne vickrat anketu. A jak vyřešit ten počet hlasů jsem myslel, nějak přes count(), ale to nevím jak. Předem děkuju. (-: |
||
Kajman_ Profil * |
SELECT ankety.id, ankety.anketa, odpovedi.odpoved, odpovedi.id, count(hlasy.anketa_id) hlasu FROM ankety LEFT JOIN odpovedi ON ankety.id = odpovedi.anketa_id LEFT JOIN hlasy ON odpovedi.anketa_id = hlasy.anketa_id and odpovedi.id=hlasy.odpoved_id group by ankety.id, ankety.anketa, odpovedi.odpoved, odpovedi.id |
||
Časová prodleva: 17 dní
|
|||
maxx Profil * |
#3 · Zasláno: 3. 3. 2009, 13:23:33
Dal by se do toho dotazu ještě nějak přidat celkovej počet hlasů? Nebo se na to musí vytvořit další dotaz? Dík
|
||
Kajman_ Profil * |
#4 · Zasláno: 3. 3. 2009, 13:45:55
SELECT ankety.id, ankety.anketa, odpovedi.odpoved, odpovedi.id, count(hlasy.anketa_id) hlasu, soucet.vsech FROM ankety LEFT JOIN odpovedi ON ankety.id = odpovedi.anketa_id LEFT JOIN hlasy ON odpovedi.anketa_id = hlasy.anketa_id and odpovedi.id=hlasy.odpoved_id LEFT JOIN (select anketa_id, count(*) vsech from hlasy group by anketa_id) soucet on soucet.anketa_id=ankety.id group by ankety.id, ankety.anketa, odpovedi.odpoved, odpovedi.id |
||
sql Profil * |
#5 · Zasláno: 3. 3. 2009, 16:22:59
a je rychlejší použít tento SQL příkaz, nebo pak použít php fci count() ? (používám dibi, takže udělam $result = dibi:.query(...) a pak count($result))
děkuju |
||
Časová prodleva: 15 let
|
0