有三个表,学分表,学生表和成绩表,利用Transact-SQL语句实现学生考试结束录入成绩后,要能够根据成绩及时将学生新获取的课程的学分累计上去,获取学分的条件是考试成绩不低于60分;而当成绩被修改时,要能够根据所做修改更新学分;若某学生某门课的成绩取消,要能够同时取消这门课所获得的学分
时间: 2023-12-19 08:04:05 浏览: 19
假设学生表、学分表、成绩表的列分别如下:
学生表(student):
- 学生编号(student_id)
- 学生姓名(student_name)
学分表(credit):
- 学生编号(student_id)
- 学分(credit)
成绩表(score):
- 学生编号(student_id)
- 课程编号(course_id)
- 成绩(score)
则可以使用以下Transact-SQL语句实现上述功能:
-- 根据成绩及时将学生新获取的学分累计上去
UPDATE credit
SET credit = credit + 3 -- 假设每门课程学分为3
FROM credit c
JOIN score s ON c.student_id = s.student_id AND s.score >= 60
WHERE s.student_id = [学生编号] AND s.course_id = [课程编号]
-- 更新学分
UPDATE credit
SET credit = credit + 3 -- 假设每门课程学分为3
FROM credit c
JOIN score s ON c.student_id = s.student_id AND s.score >= 60
WHERE s.student_id = [学生编号] AND s.course_id = [课程编号] AND s.score = [修改后的成绩]
-- 取消课程所获得的学分
UPDATE credit
SET credit = credit - 3 -- 假设每门课程学分为3
FROM credit c
JOIN score s ON c.student_id = s.student_id AND s.score >= 60
WHERE s.student_id = [学生编号] AND s.course_id = [课程编号] AND s.score IS NULL
其中,[学生编号] 和 [课程编号] 分别为需要操作的学生和课程的编号。需要根据实际情况进行修改。