0

私は、従業員に毎週短いクイズを提供するWebベースのトレーニング管理システムを開発しています。Webisteのプロファイルセクションで、従業員は自分が参加しなかったクイズのリストを見ることができるはずです。システムに表示させることはできますが、システムを改善した後は表示されません。

まず第一に、私は次のデータベース設計を持っています:

Quiz Table: QuizID, Title, Description, IsSent
UserQuiz Table: ID, QuizID, Score, DateTimeComplete, Username

IsSentは、送信されたかどうかに関係なくクイズを参照するフラグです。

管理者が1日に約50のクイズを挿入できるようにしたいので、IsSentをクイズテーブルに入れました。その後、システムは毎週それらを送信する処理を行います。これで、ユーザーが自分のプロファイルを表示して、自分が参加しなかったクイズを表示したい場合、送信されたクイズのリストを表示する必要がありますが、自分は参加していません。

私が今直面している問題は、送信されていないクイズが、従業員が参加しなかったクイズのリストとしてシステムに表示されることです。これは間違っています。では、どうすればこの問題を解決できますか?

私の質問:

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

クエリの最後に次の行を追加します

AND IsSent = 1

PS私はurisSent列がtinyintで1=trueであると仮定しています

于 2012-07-28T08:45:24.467 に答える
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 に答える