MYSQL получает таблицу результатов опроса

#mysql

#mysql

Вопрос:

У меня есть 2 таблицы, одна с ответами на опрос и одна с голосами:

 DESC polls;

Field   Type      Null  Key Default Extra
id      int(11)   NO    PRI NULL    auto_increment
pollId  int(11)   NO    MUL NULL    
answer  varchar(150)    YES NULL    

DESC votes;
Field    Type      Null Key Default Extra
id       int(11)    NO  PRI NULL    auto_increment
pollId   int(11)    NO  MUL NULL    
answerId int(11)    NO  MUL NULL    
userId   int(11)    NO  MUL NULL    
  

Я пытаюсь получить следующие результаты со всеми ответами и голосами:

 pollId answerId numberOfVotes
1        1          20
1        2          10
1        3          0
  

Я попробовал правильное объединение голосов с ответами, но это не работает:

 SELECT answers.id, COUNT(votes.answerId) FROM answers JOIN votes ON votes.pollId = answers.pollId GROUP BY votes.pollId;
  

Ответ №1:

используйте левое соединение

ДЕМОНСТРАЦИЯ

 SELECT polls.pollId,polls.id,COUNT(userid) as counts
FROM polls left JOIN votes ON votes.pollId = polls.pollId and 
polls.id=votes.answerId
GROUP BY polls.pollId,polls.id order by polls.id
  

ВЫВОД:

 pollId  id  counts
14      17  0
14      18  2
14      19  0
14      20  0
  

Комментарии:

1. Я попробовал это, это дает мне неверный результат, где говорится, что ответы с 0 голосами имеют голоса.

2. можете ли вы добавить некоторые образцы данных, тогда их будет легко получить @NodirNasirov

3. select * from answers; id pollId answer 17 14 black 18 14 brown 19 14 white 20 14 bold select * from votes; id pollId answerId userId 5 14 18 3 6 14 18 2

4. @NodirNasirov, и из этих строк какой ваш ожидаемый результат?

5. answerId countVotes 17 0 18 2 19 0 20 0