Я занимаюсь разработкой веб-приложения для интрасети, которое предоставляет пользователям короткие тесты. Тесты будут отправлены пользователям по электронной почте. У меня есть следующий дизайн базы данных:
Таблица сотрудников: Имя пользователя, Имя, Работа, DivisionID
Таблица подразделений: DivisionID, DivisionName
Таблица теста: QuizID, заголовок, описание, IsSent
Таблица UserQuiz: UserQuizID, Счет, DateTimeComplete, QuizID, Имя пользователя
ПРИМЕЧАНИЕ. Первым атрибутом в каждой таблице является первичный ключ.
А для вашей информации IsSent - это флаг, используемый для определения того, какой тест отправляется пользователям, а какой нет.
Что мне нужно и нужно сейчас: Мне нужно составить запрос, который показывает имена неучастников в последней отправляющей викторине. Это означает, что если пользователям отправлено более одного теста, этот запрос должен отображать имена неучастников в последнем тесте отправки. Запрос также должен отображать DivisionName.
Я предложил следующий запрос, но он показывает неучастников во всех опросах в базе данных. Так как это изменить? или как получить то, что требуется выше?
SELECT TOP (100) PERCENT Q.Title, D.DivisionShortcut, E.Name
FROM dbo.Quiz AS Q CROSS JOIN
dbo.employee AS E LEFT OUTER JOIN
dbo.Divisions AS D ON E.DivisionCode = D.SapCode
WHERE (NOT EXISTS
(SELECT UserQuizID, QuizID, DateTimeComplete, Score, Username
FROM dbo.UserQuiz AS UQ
WHERE (Username = E.Username) AND (QuizID = Q.QuizID)))
ORDER BY Q.Title, D.DivisionShortcut