私は、従業員に毎週短いクイズを提供する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)))