stinfo,cinfo,scinfo多表联合查询
查询课程成绩在70~80之间的学生的学号、姓名和成绩
查询选修“C++程序设计基础”课程的学生的学号和成绩
查询所有课程的不及格成绩单,要求给出学生的课程编号、课程名称、学号和成绩
多表联合查询语句怎么写
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
4条回答 默认 最新
关注引自免费微信小程序:皆我百晓生
为了帮助您完成这些SQL查询,我会分别为您编写相应的查询语句,并解释它们的工作原理。
- 查询课程成绩在70~80之间的学生的学号、姓名和成绩
假设我们有三个表:学生信息(students), 课程信息(courses),以及成绩信息(scores)。学生表(stinfo)包含学号(student_id)、姓名(name)等字段,课程表(cinfo)包含课程编号(course_id)、课程名称(course_name)等字段,成绩表(scinfo)包含学号(student_id)、课程编号(course_id)和成绩(grade)等字段。
查询语句如下:
SELECT s.student_id, s.name, sc.grade FROM students s JOIN scores sc ON s.student_id = sc.student_id WHERE sc.grade BETWEEN 70 AND 80;这个查询首先通过
JOIN操作将学生表和成绩表连接在一起,然后通过WHERE子句筛选出成绩在70到80之间的记录。- 查询选修“C++程序设计基础”课程的学生的学号和成绩
SELECT sc.student_id, sc.grade FROM scores sc JOIN courses c ON sc.course_id = c.course_id WHERE c.course_name = 'C++程序设计基础';这个查询首先通过
JOIN操作将成绩表和课程表连接起来,然后通过WHERE子句筛选出选修了"C++程序设计基础"课程的记录。- 查询所有课程的不及格成绩单,要求给出学生的课程编号、课程名称、学号和成绩
这里我们假设不及格的成绩为60分以下。我们可以使用同样的方法连接这三个表并进行筛选:
SELECT sc.course_id, c.course_name, s.student_id, sc.grade FROM students s JOIN scores sc ON s.student_id = sc.student_id JOIN courses c ON sc.course_id = c.course_id WHERE sc.grade < 60;这个查询会返回所有不及格(成绩低于60分)的学生的课程编号、课程名称、学号和成绩。
请注意,这些查询假设了表之间的关联是正确的,即学生表中的学生ID与成绩表中的学生ID对应,且成绩表中的课程ID与课程表中的课程ID对应。根据您的实际数据库结构,可能需要调整表名、列名和关联条件。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录