Я разрабатываю простой механизм викторин, аналогичный тому, что используется на веб-сайте ASP.NET. У меня есть следующий дизайн базы данных:
Таблица пользователей: имя пользователя, имя, код подразделения и т. д.
Таблица подразделений: SapCode, подразделение
Таблица викторины: QuizID, заголовок, отправлено, описание
UserQuiz: UserQuizID, QuizID, DateTimeComplete, Оценка, Имя пользователя
Каждую неделю сотрудники моей компании будут получать по электронной почте уведомление об участии в новой викторине, доступной в системе. Тест, который будет отправлен сотрудникам, будет иметь (True) значение атрибута IsSent, и это то, что отличает его от других тестов, которые не отправляются сотрудникам. Теперь я хочу показать количество участников последней пройденной викторины, поскольку каждую неделю будет отправляться только одна викторина.
Мой запрос, который показывает общее количество участников во всех пройденных викторинах:
SELECT dbo.Divisions.DivisionShortcut, COUNT(DISTINCT dbo.UserQuiz.Username) AS [Number of Participants], dbo.Quiz.QuizID
FROM dbo.Divisions INNER JOIN
dbo.employee ON dbo.Divisions.SapCode = dbo.employee.DivisionCode INNER JOIN
dbo.UserQuiz ON dbo.employee.Username = dbo.UserQuiz.Username INNER JOIN
dbo.Quiz ON dbo.UserQuiz.QuizID = dbo.Quiz.QuizID
WHERE (dbo.Quiz.IsSent = 1)
GROUP BY dbo.Divisions.DivisionShortcut, dbo.Quiz.QuizID
Итак, как исправить это, чтобы отображалось только количество участников последнего пройденного теста (отправленного теста)?
*
иROW_NUMBER()
, извините. 27.02.2012