Сравните два похожих столбца из двух таблиц в приложении SQL Server C # для Windows

#c# #sql #sql-server #ado.net

#c# #sql #sql-сервер #ado.net

Вопрос:

Я работаю над приложением-викториной с несколькими вариантами ответов.

У меня есть два стола.

  1. Вопросы — в нем есть столбец с именем CorrectAnswer
  2. Пользовательские вопросы — в нем есть столбец с именем SelectedAnswer

Я хочу проверить, равен ли правильный ответ в первой таблице выбранному ответу во второй таблице, обе таблицы имеют столбцы userId и questionText

Это предназначено для вычисления оценки. Результат, который я ожидаю, — это число после его сравнения.

Решение, которое я пытался реализовать до сих пор, запрашивает обе таблицы

 SELECT UserId, QuestionText, CorrectAnswer FROM Questions
 
 SELECT UserId, QuestionText, SelectedAnswer FROM UserQuestions
 

Сохраните все значения в массиве dictionary, затем попробуйте сравнить их, если они равны. Я устанавливаю переменную count, а затем сохраняю результат.

Я надеюсь, что есть гораздо лучший подход.

Комментарии:

1. внутреннее соединение и подсчет?

2. Пожалуйста, предоставьте образцы данных и желаемые результаты. Как вы обрабатываете пользователей, которые не отвечают на вопрос?

Ответ №1:

Вы можете вычислить оценку каждого пользователя с помощью объединения и условной агрегации:

 select uq.userid, 
    avg(case when uq.selectedanswer = q.correctanswer then 1.0 else 0 end) as ratio
from userquestions uq
inner join questions q 
    on  q.questiontext = ua.questiontext
    and q.userid = uq.userid
 

Это дает вам соотношение правильных ответов на пользователя в виде числа между 0 и 1 . Если вам нужно количество правильных ответов, то вы можете просто sum() вместо этого.