У меня есть веб-сайт, который собирает входные данные пользователей. Мы даем пользователям вопросы и просим их выбрать ответы. Есть несколько вопросов. В некотором вопросе пользователь может выбрать только один ответ, а в каком-то вопросе пользователь может выбрать несколько ответов из-за возможностей флажка.
Когда я пишу 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 с MySQL. И вопрос, и ответ пользователя хранятся в другой таблице, но связь установлена.
Благодарю вас.
Попробуйте что-то вроде этого:
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?
Попробуй это:
SELECT questions, GROUP_CONCAT(User_Answer) as User_Answer
FROM table_name GROUP BY questions
Посмотрите на GROUP_CONCAT () для дополнительной информации.