我正在开发一个基于网络的培训管理系统,为员工提供每周一次的小测验。在网站的个人资料部分,员工应该能够看到他没有参与的测验列表。我可以让系统显示它们,但在改进系统后不能显示它们。
首先,我有以下数据库设计:
Quiz Table: QuizID, Title, Description, IsSent
UserQuiz Table: ID, QuizID, Score, DateTimeComplete, Username
IsSent 是一个标志,指的是已发送或未发送的测验
我将 IsSent 放在测验表中,因为我希望管理员能够在一天内插入大约 50 个测验。然后,系统将处理每周发送它们。现在,当用户想要查看他的个人资料并查看他没有参与的测验时,他应该看到已发送且他没有参与的测验列表。
我现在面临的问题是系统将尚未发送的测验显示为员工未参与的测验列表,这是错误的。那么我该如何解决这个问题呢?
我的查询:
SELECT Title, Description
FROM dbo.Quiz
WHERE (NOT EXISTS
(SELECT QuizID
FROM dbo.UserQuiz
WHERE (dbo.Quiz.QuizID = QuizID) AND (Username = @Username)))