Как я должен идти о сравнении всех строк в таблице SQL с "основной записи" с помощью vb.net? - PullRequest
1 голос
/ 26 февраля 2012

Скажем, например, это тест, в котором ответы уже загружены в базу данных от разных студентов. Внутри таблицы с различными записями учеников, содержащими разные ответы учеников, находится строка «masterterentry» со всеми правильными ответами.

То, что я хотел бы сделать, - это кодировать кнопку, которая будет нажимать главную строку при нажатии и сравнивать каждую другую строку с ней. Начиная с первой строки, каждый раз, когда столбец соответствует главной записи, 1 точка присваивается объявленному целому числу. Когда строка полностью прочитана, целое число сохраняется в столбце «totalpoints». Затем он переходит к следующему ряду ответов.

Надеюсь, это имеет смысл в том виде, в котором я его сформулировал, если есть более простой способ сделать это, я открыт для предложений. Мне не нужна помощь в установлении соединения с базой данных sql. Любая помощь будет принята с благодарностью, заранее спасибо за чье-либо время. Я могу предоставить более подробную информацию, если это будет полезно.

1 Ответ

1 голос
/ 26 февраля 2012

Просто грубое предположение, основанное на смутном представлении о схеме. Вы бы просто вызвали этот запрос из .NET (желательно, чтобы он хранился в хранимой процедуре, передавая @QuizID), если вы действительно не хотите делать это менее эффективно, выполняя цикл после передачи всех данных клиенту ...

;WITH master AS (SELECT a1 = Answer1, a2 = Answer2, ...
  FROM dbo.Quiz
  WHERE QuizID = @QuizID
  AND Answer = 'masterentry'
)
SELECT a.StudentID,
    Score = CASE WHEN a.Answer1 = master.a1 THEN 1 ELSE 0 END
          + CASE WHEN a.Answer2 = master.a2 THEN 1 ELSE 0 END
          + ...
FROM dbo.Quiz AS a
CROSS JOIN master
WHERE a.QuizID = @QuizID
AND a.Answer <> 'masterentry' -- or a.StudentID IS NOT NULL?

Здесь могут быть некоторые комбинации клавиш, основанные на типах данных. Например. если тест является истинным / ложным, есть несколько маленьких хитростей, которые можно сделать, чтобы уменьшить ... часть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...