如何显示员工没有参与的测验?

时间:2012-06-25 07:37:00

标签: sql sql-server-2008-r2

我有以下数据库设计:

Employee Table: Username, Name
Quiz Table: QuizID, Title, IsSent, Description
UserQuiz Table: UserQuizID, QuizID, Score, Username

(IsSent是一个标志(比特类型),表明测验是否已发送给所有员工)

我现在需要编写一个查询,显示已发送给员工的测验的标题和说明,但他没有参与。因此,当员工在系统中查看他的个人资料时,他会看到他参与的测验(如果有的话)。 怎么做?

我写了一个通用查询,显示所有员工都没有参与的测验。它应该特定于给定/指定的员工。 那么如何修改呢?

查询:

SELECT     Title, Description
FROM         dbo.Quiz
WHERE     (NOT EXISTS
                          (SELECT     QuizID
                            FROM          dbo.UserQuiz
                            WHERE      (dbo.Quiz.QuizID = QuizID)))

1 个答案:

答案 0 :(得分:1)

尝试这种方式: -

SELECT Q.Title, Q.Description 
FROM Quiz Q
WHERE     
    (NOT EXISTS                           
        (SELECT UQ.QuizID 
         FROM UserQuiz UQ, Employee E
         WHERE Q.QuizID = UQ.QuizID and E.Username = UQ.Username)
     )