MySQL查询:选择每个选项被选中的次数

MySQL查询:选择每个选项被选中的次数,mysql,Mysql,我有两张mysql表 1. questions: with the following columns: id, title, answer1, answer2, answer3, answer4, answer5, nranswers. 及 每个问题最多有5个答案,可以有2到5个答案。我的问题是,我想从我的数据库中选择一个给定的问题,每个选项被选择了多少次 例如,假设我有一个id为46的问题,有4个答案,48个用户投票支持选项2,37个用户投票支持选项1,39个用户投票支持选项4 我需要一个

我有两张mysql表

1. questions: with the following columns: id, title, answer1, answer2, answer3, answer4, answer5, nranswers.

每个问题最多有5个答案,可以有2到5个答案。我的问题是,我想从我的数据库中选择一个给定的问题,每个选项被选择了多少次

例如,假设我有一个id为46的问题,有4个答案,48个用户投票支持选项2,37个用户投票支持选项1,39个用户投票支持选项4

我需要一个查询来选择它并编写以下内容:

137 2 48 3 0 4 39


附言:非常重要!它必须只计算NR答案,并且必须与以前未投票的答案相呼应。

最好的方法是:更改表格定义:

Questions (Question_ID, title)
Answers (Answer_ID, Question_ID, answer_text)
Votes (User_ID, Answer_ID)
其中包含与def相同的数据,但在中。选择计数现在非常容易

SELECT
  a.Answer_ID,
  COUNT(v.User_ID)
FROM
  Questions q
LEFT JOIN Answers a ON q.Question_ID = a.Question_ID
LEFT JOIN Votes v ON a.Answer_ID = v.Answer_ID
WHERE q.Question_ID = 46 -- or any other question ID
GROUP BY a.Answer_ID
ORDER BY a.Answer_ID;

选择q.id作为问题,a.answer作为答案,counta.answer作为问题q的计数,按q.id回答一组问题,a.answer

上面的问题,它将返回如下

question   answer   Count
1            1        37
1            2        48
1            4        39


1            3         0               this is missing



                                 OR

选择a.question\u id,a.answer,counta.answer FROM test.answers按a.question\u id,a.answer回答一组问题你自己有什么?我不知道如何实现这一点,这就是为什么我问这里我已经知道如何在没有0计数的情况下进行,但我也需要0计数
question   answer   Count
1            1        37
1            2        48
1            4        39


1            3         0               this is missing



                                 OR