我正在为考试注册和评分构建软件:
我需要从这两个表中获取数据:
考试
|------------------------------------------------------------|
| ExamId | ExamTitle | EducationId | ExamDate |
|------------------------------------------------------------|
考试尝试
|-----------------------------------------------------------------------------|
| ExamAttemptId | ExamId | StudentId | Grade | NotPresentCode |
|-----------------------------------------------------------------------------|
- 学生参加教育
- 教育有多重考试
- 学生每次考试最多有 6 次尝试
- 每次尝试都被评分或标记为不存在
如果满足以下条件,学生可以报名参加考试: - 尚未通过(2 级以下) - 未使用所有尝试
我想列出学生可以报名参加的所有考试。
它可能相当简单,但我无法理解它,现在我被卡住了!我已经尝试了一切,但还没有做对。这是我做过的最绝望的尝试之一(!):
CREATE PROCEDURE getExamsOpenForSignUp
@EducationId int,
@StudentId int
AS
SELECT ex.*
FROM Exams ex
LEFT JOIN (
SELECT ExamId, COUNT(ExamId) AS NumAttempts
FROM ExamAttempts
WHERE StudentId = @StudentId AND grade < 2 OR grade IS NULL
GROUP BY ExamId
) exGrouped ON ex.ExamId = exGrouped.ExamId
WHERE educationid = @EducationId and exGrouped.ExamId IS NULL OR exGrouped.NumAttempts < 6;
GO
我究竟做错了什么?请帮忙...