我正在开展一个学生参加考试的项目 - 其中一些限定条件是他们只能参加他们注册的考试(按班级),并且他们只能参加一次考试。我已经弄清楚了大部分......但我正在研究一个用于下拉菜单的 SELECT 语句。我有一个问题。
相关结构,只有列名:
用户表
- 用户身份
测验表
- 测验ID
完成表
- 用户身份
- 测验ID
所以基本上,在测验完成后 - 所有结果都会转到另一个名为 Results 的表中,但在 Complete 表中也会创建一个条目,记录用户 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'
哪个有效 - 从技术上讲。但是你会看到这里的问题是什么……如果历史课上有人参加考试……那么历史课上没有其他人可以参加考试。所以我必须通过用户 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”是 Session UserID 的占位符 - 但也是一个测试人员,因为我有两个历史测试,并且我有一个条目说这个学生已经参加了其中一个。但我无法让它正常工作。
对我在这里做错了什么有任何帮助吗?