私は、学生がテストを受けるプロジェクトに取り組んでいます。いくつかの修飾子は、(クラスごとに) 登録されているテストしか受けられず、各テストは 1 回しか受けられないというものです。私はそれをほとんど理解しています..しかし、私はドロップダウンメニューで使用するためのSELECTステートメントに取り組んでいます。そして、私は問題を抱えています。
列名のみの関連構造:
ユーザーテーブル
- ユーザーID
クイズ表
- クイズID
完全な表
- ユーザーID
- クイズID
基本的に、クイズが完了すると、すべての結果がリザルトという別のテーブルに移動しますが、ユーザーの ID とクイズ ID を記録する完了テーブルにもエントリが作成されます。次に、次の SQL ステートメントを作成してドロップダウンに入力します。
SELECT Quiz.QuizID, Quiz.QuizName
FROM Quiz
LEFT JOIN Complete ON Complete.QuizID = Quiz.QuizID
WHERE Complete.QuizID IS NULL
AND Quiz.Class = 'History'
どちらが機能しますか-技術的に。しかし、ここで何が問題なのかがわかります. History クラスの誰かがテストを受けると.. History クラスの他の誰もテストを受けることができなくなります。そのため、それをユーザー ID で区切る必要があります。私は次のようなことを試しました:
SELECT Quiz.QuizID, Quiz.QuizName
FROM Quiz
LEFT JOIN Complete ON Complete.QuizID = Quiz.QuizID
WHERE Complete.QuizID IS NULL
AND Quiz.Class = 'History'
AND Complete.UserID = (SELECT UserID
FROM User
WHERE UserID = '2')
ここで、「2」はセッション ユーザー ID のプレースホルダーですが、テスターでもあります。これは、2 つの履歴テストがあり、この学生がそのうちの 1 つを取得したというエントリがあるためです。しかし、私はこれを適切に機能させることができません。
ここで私が間違っていることについて何か助けはありますか?