请问这条sql怎么打?

查询统计所选课程门数在2门(包含2门)以上的学生的学号、姓名和选课门数,并按照选课门数升序排列。

表1. 学生信息表(Student_Info)
(Sid 学号、Sname 姓名、Sgender 性别、Sbirth 出生日期、Sdepart 系编号、Saddr 地址、Stel 电话)

表2. 课程信息表(Course_Info)
(Cid 课程编号、Cname 课程名称、Cperiod 学时、Ccredit 学分、Sterm 学期、Ctype 课程类型)

表3.成绩信息表(SC)
(Sid 学号、Cid 课程编号、Grade 成绩)

select SId,SName,count (sc.Sid) as num from Studant_Info as si left join SC as sc on si.Sid=sc.Sid group by sc.Sid having nun>1 order by num
num为课程数量,使用的是左连接 。学生表作为主表,左连接上成绩表就能查出每个学生选的课程,使用count统计函数,按照每个学生的学号进行分组,就能得出每个学生选了几门课。如果选用成绩表作为主表,那么就查询不到没有选课的学生信息。在使用聚合函数来做筛选条件时只能用having 不能用where追问

外部连接查询不是查一个表的全部数据吗

和另一个表的相关数据

追答

是的

追问

那这里还用左连接吗

抱歉 我是学渣 能解释一下吗

追答

因为要查出每个学生的选课门数,如果不用左连接的话无法查询出没有选课的学生,当然了只需要选课门数大于2,表明了只查询选了课的学生。这种情况下内链接是可以满足需求的

追问

左连接不是外部连接吗

温馨提示:答案为网友推荐,仅供参考
相似回答