[mysql] Wyciąganie wyników głosowania

0

W tabeli sonda_glosowanie mam odpowiedzi dla różnych ankiet. W przypadku, jeżeli mam dla danej sondy o id=1 trzy możliwe odpowiedzi, a w bazie sonda_glosowanie są głosy tylko dla dwóch różnych odpowiedzi moje zapytanie kuleje i wyświetla mi tylko wynik ilości głosów dla dwóch odpowiedzi pomijając tą trzecią - no przecież nie może się domyśleć, że jest jeszcze opcja na którą nikt jeszcze nie zagłosował.

I teraz moje pytanie, w jaki sposób pobrać wyniki, żeby móc stwierdzić, że jest jeszcze odpowiedź, na którą nie ma głosów.

Dodatkowe objaśnienie na przykładzie poniżej.

Moje zapytanie:
SEL ECT COUNT(*) AS ile FR OM 'sonda_glosowanie' WHERE sonda_id='$sonda_id' ORDER BY odp_id DE SC

Struktura bazy:
ID | SONDA_ID | ODP_ID

Zawartość bazy:

ID | SONDA_ID | ODP_ID
1 | 1 | 2
2 | 1 | 3
3 | 1 | 2
4 | 1 | 2
5 | 1 | 3 

Jak widać w zawartości bazy wszystkie głosy dotyczą sondy o id 1. Pojawiają się głosy o id 2 oraz 3, nie ma natomiast głosu o id = 1. Jeżeli odpytuję bazę powyższym zapytaniem otrzymam wynik: 3 , 2. Analogicznie 3 głosy dla odp_id=2 i dwa głosy dla odp_id=3. Nie ma głosów dla odp_id=1 i tutaj chciałbym, aby zapytanie wiedziało że jest jeszcze odp_id=3 które nie ma głosów. Pytanie - jak to zrobić? pomysły? Chyba utknąłem w martwym punkcie.

0

musisz zaczac select od tabeli w ktorej masz spisane mozliwe odpowiedzi a nastepnie zrobic left join z tabela ktora opisales:

select count(1) 
  from tabela_odpowiedzi to 
  left join sonda_glosowanie sg on to.id_sondy=sg.id_sondy and to.odp_id=sg.odp_id
where sonda_id= 1 -- przykladowa wartosc
group by sg.odp_id

Powinno zalatwic sprawe

1 użytkowników online, w tym zalogowanych: 0, gości: 1