重复查询具有相同的问题,但答案不同

时间:2014-09-19 09:09:04

标签: php mysql sql database

我有一个收集用户输入的网站。我们提出用户问题并要求他们选择答案。有几个问题。在某些问题中,用户只能选择一个答案,在某些问题中,用户可以选择多个答案,因为复选框功能。

当我编写一个sql查询时,我会列出多个问题,列出了多个答案选择问题。像这样。

Question                                    User Answer
--------                                    -----------
What color is apple?                           Red
What color is banana?                         Yellow
Days in Weekday?                              Monday    
Days in Weekday?                              Tuesday
Days in Weekday?                              Wednesday
Days in Weekday?                              Thursday
Days in Weekday?                              Friday
Total days in a week?                          7

我想要的是这样......

Question                                    UserAnswer
--------                                    -----------
What color is apple?                           Red
What color is banana?                         Yellow
Days in Weekday?                              Monday, Tuesday, Wednesday, Thursday, Friday
Total days in a week?                          7

我尝试使用不同但因为这些是我无法使用的文本......有人能给我一个简单的方法吗?

我在PHP中使用PHP。 Question和UserAnswer都存储在不同的表中,但是关系已经建立。

谢谢。

2 个答案:

答案 0 :(得分:1)

尝试这样的事情:

SELECT questions.question_text, GROUP_CONCAT(answer.answer_text SEPARATOR ',')
FROM questions 
    LEFT JOIN answer ON question.id = answer.question_id
GROUP BY question.id

显然,表/列名称将是它们的任何名称。左连接确保您得到没有答案的问题,您可能想要也可能不想要。

[编辑]使用您的表格,它应该是

SELECT questions.text, GROUP_CONCAT(answers.text SEPARATOR ',')
FROM questions
    LEFT JOIN UserResponse ON questions.id = UserResponse.question_id
    LEFT JOIN answers on UserResponse.answer_id = answers.id
GROUP BY question.id

这将适用于所有用户 - 可能在您的UserResponse表中,您有可能作为WHERE添加的用户ID?

答案 1 :(得分:0)

试试这个:

SELECT questions, GROUP_CONCAT(User_Answer) as User_Answer
FROM table_name GROUP BY questions

请查看GROUP_CONCAT()了解详情。