私は、知識をリフレッシュするための短いクイズをユーザーに提供するトレーニング管理 Web ベースのシステムを開発しています。とにかく、次のデータベース設計があります。
Employee Table: Username, Name, DivisionCode
Divisions Table: SapCode, DivisionShortcut
Quiz Table: QuizID, Title, IsSent
Question Table: QuestionID, Question, QuizID...
UserQuiz Table: UserQuizID, QuizID, Username, Score.
ちょうど最後のクイズで、すべての部門のすべての非参加者の名前を表示するクエリを思いつくことができました。私が今欲しいのは、参加するためにユーザーに送信されたすべてのクイズで非参加者の名前を表示することです。結果は、クイズのタイトルと DivisionShortcut でグループ化して一覧表示する必要があります。では、どうやってそれを行うのですか?
私のクエリ:
SELECT d.DivisionShortcut, e.Name
FROM employee e
join Divisions d on (e.DivisionCode = d.SapCode)
left join (select A.QuizID, a.Username
from UserQuiz a join
(select max(QuizID) QuizID from dbo.Quiz where IsSent=1) b
on a.QuizId = b.QuizID ) c
on e.Username = c.Username
WHERE c.QuizID is null
Order By d.DivisionShortcut