У меня есть следующие таблицы и соответствующие атрибуты:Как мне сделать этот запрос, получить результат, который нам нужен?
Survey:
SurveyID int,
SurveyTitle nvarchar(50)
SurveyQuestions
QuestionId int,
SurveyId fk from Survey table
Question nvarchar(100)
QuestionOrder int (eg: 1,2,3)
AnswerType char(1) (M. for Multiple choice answers like Checkbox, S for single like radiobuttion, T for Free Text
SurveyChoices
ChoiceId int
QuestionId int fk from SurveyQuestions
Choice nvarchar(255) (eg: Choices for each question entered by Admin
IsCorrect bit (1 for Correct choice, 0 for incorrect choice.
SurveyAnswers
AnswerId int
ChoiceId int fk from SurveyChoices
QuetionId int fk from SurveyQuestions
ChoiceText nvarchar(2000) (For FreeText)
Вот что моя потребность.
Мы хотели бы задать вопрос для КАЖДОГО обследования, а затем выбрать пользователя и, наконец, правильный ответ или ответы.
Пользователи могут проверить более 1 несколько вариантов ответа (чекбоксы)
Таким образом, расположение должно быть что-то вроде:
Question Your Choice Correct Answer(s)
How many days in a year? 365 365
Tom Cruise Starred in
what movies? Check all that apply Rain Man Rain Man
Risky Business Risky Business
Mission Possible Mission Impossible
Вы можете увидеть схему SQL на скрипку
http://sqlfiddle.com/#!3/4c642/1
Предоставлено Стивом Фордом. Еще раз спасибо Стив.
Моя попытка запроса ниже:
SELECT DISTINCT SQ.question, SC.Choice As CorrectAnswer
FROM surveyquestions AS SQ
INNER JOIN surveychoices AS SC ON SQ.QuestionID = SC.QuestionID
INNER JOIN surveyanswers AS SA ON SA.QuestionID = SQ.QuestionID AND SC.choiceId = SA.choiceId AND SA.username = 'John.Doe'
WHERE SQ.SurveyID = 10
вопросы являются правильными.
Правильные ответы не совсем корректны, потому что, если более чем один выбор правилен, как в случае с фильмами Tom Cruise, все они не отображаются.
Мы хотели бы отобразить все правильные ответы на каждый вопрос.
Наконец-то я не могу понять, как отображать пользовательские варианты.
Ваша экспертная помощь с благодарностью.
Не могли бы вы приложить конкретный пример того, как должен выглядеть результат? (например, Джон Доу) –
Несомненно @FabianBigler, я обновил свой код выше. Это не выглядит так ясно, хотя, надеюсь, это будет для вас. Это не совсем правильный вывод, но это макет. Вопросы выходят нормально. Но выбор пользователя должен показывать ВСЕ варианты на вопрос. То же самое с правильными ответами. Большое спасибо за помощь –
@ChidiOkeh это поможет, если вы добавите свои новые данные опроса в часть настройки демонстрации SQLFiddle –