我想进行调查(2个或更多选择),并将结果放在表格中。我只是想知道如何在SQL查询中记录结果。
更重要的是,我应该在查询中进行数学计算,还是只使用PHP来进行数学运算?
实施例
问题表
question_id (int)
question (text)
answer_1 (varchar)
answer_2 (varchar)
answer_3 (varchar)
etc...
答案表
answer_id (int)
question_id (int)
answer (int) The answer they chose. (1, 2, 3, etc.)
我将如何/应该如何计算结果?
编辑:使用MySQL,PHP。答案之间的差异(45%表示等等,50%表示等等,5%表示bloch)。不是作业,Im EE,而不是CS
答案 0 :(得分:1)
如果事先不知道答案的数量,将问题表分为2 - 一个用于问题(question_id,question_text),一个用于选择(question_id,choice_id,choice_text)会更简单。答案表可以制作成(question_id,answer_id,choice_id)。然后选择它将使用类似下面的内容(QID =您选择的问题的ID):
SELECT choice,
(COUNT(*) / (SELECT COUNT(*)
FROM answers
WHERE answers.question_id = QID)) * 100 AS percentage
FROM choices
INNER JOIN answers
ON choices.choice_id = answers.choice_id
AND choices.question_id AND choices.question_id
WHERE choices.question_id = QID
GROUP BY choice_id;
所有这一切都是计算内部查询中的答案总数,然后对于每个选项,将该选项的答案数除以总数。
答案 1 :(得分:0)
这将选择问题中每个答案的受欢迎程度:
SELECT question,
COUNT(*) /
(
SELECT COUNT(*)
FROM answers ai
WHERE ai.question = a.question
)
FROM answers a
GROUP BY
question, answer
如果从未给出答案,则不会选择答案。
答案 2 :(得分:0)
select answer, count(*) from Answers where answer_id = 1 group by answer
或
select answer_id,answer, count(*) from Answers group by answer_id, answer
我会给你一个查询来计算每个问题的答案,但遗憾的是你没有办法将答案与问题联系起来。你也不应该在问题表中回答_1,回答_2等。你需要规范化表格。如果您不了解如何操作,则需要在设计数据库之前学习。