0

我正在开发一个基于网络的培训管理系统,为员工提供每周一次的小测验。在网站的个人资料部分,员工应该能够看到他没有参与的测验列表。我可以让系统显示它们,但在改进系统后不能显示它们。

首先,我有以下数据库设计:

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)))
4

2 回答 2

1

如果我理解正确,那么您正在寻找此查询

select QuizID, Title, Description, from quiz 
INNER JOIN userquiz ON quiz.QuizID= userquiz.QuizID
where quiz.issent = 1
于 2012-07-28T09:19:09.520 回答
1

在查询末尾添加以下行

AND IsSent = 1

PS 我假设你isSent的列是 tinyint 并且 1 = true

于 2012-07-28T08:45:24.467 回答