【发布时间】:2011-01-08 10:16:54
【问题描述】:
我 asked a question yesterday 关于使用 MySQL 对调查结果进行统计。
现在我的问题是,如果我有一个调查问题表、一个调查选项表和一个用户对这些调查问题的回答表,我将如何选择调查问题以及该调查的所有选项同一个查询?
问题表
question_id (int)
question (text)
选择表
choice_id (int)
question_id (int)
choice_text (varchar)
答案表
answer_id (int)
question_id (int)
choice_id (int)
我应该如何选择才能在同一个查询中获取调查问题以及该调查的所有选项(已知或未知数量)? (如果可能的话,也可以在我的另一个问题中找到数学,在同一个查询中)
我对 MySQL 不太了解。
谢谢
编辑: 抱歉,我的意思是,我正在尝试获取一条 SELECT 语句来选择问题以及与该问题对应的所有选项。
如果我这样做
SELECT question_id, question, choice_id, choice_text FROM questions LEFT JOIN choices USING(question_id)
我得到多行,每个choice_id 一个。
结果应该是这样的
question choice_1 choice_2 choice_3
A or B or C A B C
数学部分正在统计调查结果,是的,choice_id 是一个 PK,如果有帮助的话。
【问题讨论】:
-
您只是想要选择,还是想要数量?你的“其他问题”是什么?你想做什么“数学”?
-
您不是在寻找有关正确答案的任何信息吗?只是问题/选择的可能性?
-
@Evan:这是一项调查,不是测试——没有正确答案。
-
您的数据库设计可能未标准化。你的choice_id是PK吗?如果是这样,如果答案表中的question_id与choice_id的question_id不匹配会怎样?
-
你不能那样做。至少,您将无法使用 php 获取它(您实际上可以执行 UNION() 但仍然无法正确获取它)。你可以做的是选择问题,所有选项都有正确的答案,然后循环运行。多个问题,ofc。