Autor Zpráva
sql
Profil *
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
maxx
Profil *
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 *
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 *
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

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: