2014-09-19 2 views
0

У меня есть веб-сайт, который собирает входные данные пользователей. Мы задаем пользователю вопрос и попросим выбрать ответы. Есть несколько вопросов. В некотором вопросе пользователь может выбрать только один ответ, и в каком-то вопросе пользователь может выбрать несколько ответов из-за возможностей флажков.Повторный запрос с одинаковыми вопросами, но разные ответы

Когда я пишу 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. Оба вопроса и UserAnswer хранятся в другой таблице, но выполняется отношение.

Thank you.

+0

вы что-то пробовали? –

+0

сохраните значение переменной. а затем использовать их, как вы хотите попробовать себя. если вы не можете, вы можете опубликовать свой код здесь. Спасибо –

+0

Я пробовал и получил этот результат с несколькими вопросами для ответов. Но мне нужен другой результат, который будет отображать только один вопрос для нескольких ответов ... как и выше. – bmm

ответ

0

Попробуйте:

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

Посмотрите на GROUP_CONCAT() для получения дополнительной информации.

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 столе у ​​вас есть идентификатор пользователя вы можете добавить как где?

+0

Всегда полезно объединять все ваши негрупповые столбцы в группе с выбором ... Вы получите строгий режим MySQL в строгом режиме, если вы этого не сделаете. Для этого конкретного примера я бы сделал MIN (questions.question_text) – Salketer

+0

Привет, но мои таблицы структурированы по-другому. Существует таблица, называемая вопросами с полями (id, text) и таблицей с ответами с полями (id, text), которая заполняется вопросами в таблице вопросов и ответами в таблице ответов. И есть еще одна таблица под названием UserResponse.Whist имеет поля таблицы, такие как (id, question_id, answer_id). Поэтому, когда пользователи отвечают и выбирают параметры, в фоновом режиме скрипт передает число, например, 1,2,3 и т. Д. Для вопросов и ответов на UserResponse (id, question_id, answer_id) ... Как исправить вышеуказанную проблему в этом случае. ? Пожалуйста помоги – bmm