SQL:查询每门课程的课程名、选课学生姓名及其学号,选课人数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL:查询每门课程的课程名、选课学生姓名及其学号,选课人数相关的知识,希望对你有一定的参考价值。

五个关系实例:
S(学生关系)
Sno
学号 Sn
姓名 Sex
性别 Age
年龄 Dept
系别
S1 赵亦 女 17 计算机
S2 钱尔 男 18 信息
S3 孙珊 女 20 信息
S4 李思 男 21 自动化
S5 周武 男 19 计算机
S6 吴丽 女 20 自动化
C(课程关系)
Cno
课程号 Cn
课程名 Ct
课时
C1 程序设计 60
C2 微机原理 80
C3 数字逻辑 60
C4 数据结构 80
C5 数据库原理 60
C6 编译原理 54
C7 操作系统 60

SC(选课关系)
Sno
学号 Cno
课程号 Score
成绩
S1 C1 90
S1 C2 85
S2 C4 70
S2 C5 57
S2 C6 80
S2 C7
S3 C1 75
S3 C2 70
S3 C4 85
S4 C1 93
S4 C2 85
S4 C3 83
S5 C2 89
TC(授课关系)
Tno
教师号 Cno
课程号
T1 C1
T1 C4
T2 C5
T3 C1
T3 C5
T4 C2
T4 C3
T5 C5
T5 C7

T(教师关系)
Tno
(教师号) tn
(姓名) Sex
(性别) Age
(年龄) Prof
(职称) Sal
(工资) Comm
(岗津) Dept
(系别)
T1 李力 男 47 教授 1500 3000 计算机
T2 王平 女 28 讲师 800 1200 信息
T3 刘伟 男 30 讲师 900 1200 计算机
T4 张雪 女 51 教授 1600 3000 自动化
T5 张兰 女 39 副教授 1300 2000 信息

我的学生数据库跟你的差不多,我就用我的这些表给你做了个

select c.Cno,s.Sname,s.Sno,选课人数 from Course c 

left join SC on c.cno=sc.cno 

left join student s on s.Sno=SC.Sno

left join (select c.cno, COUNT(s.Sno) 选课人数 from 

Course c left join SC on c.cno=sc.cno 

left join student s on s.Sno=SC.Sno 

group by c.Cno) as T ON T.Cno=c.Cno

追问

老师这样的语句 “left join SC on c.cno=sc.cno ”书上没有,您再修改一下程序吧

追答

左连接书上都没有,我表示这本书太挫了!我能力低帮不了你了!

参考技术A 你连关系都没给,怎么查。。。追问

补充完整了

追答

一张表里显示?

SQL的嵌套问题

查询选修了“数据库”的学生的姓名,学号,以及该生选修的所有课程的课程编号,课程名称

学生表(学号,院系,姓名,性别)
选课表(学号,课程编号)
课程表(课程编号,课程名称)

我做的:
SELECT 课程.课程编号,课程名称,学号,姓名
FROM student.课程 JOIN student.选课
ON 课程.课程编号=选课.课程编号
WHERE 学号=
(SELECT 学号 FROM student.选课
WHERE 课程名称='数据库')

消息 207,级别 16,状态 1,第 1 行
列名 '姓名' 无效。

到底出了什么问题??~~~
怎么关联学生表??

但是课本里的可以啊。。~~

SELECT 课程编号,课程名称,姓名,职称
FROM student.课程 JOIN student.教师
ON 课程.责任教师=教师.教师编号

WHERE 责任教师 IN
(SELECT 责任教师 FROM student.教师
WHERE 课程名称='数据库')

select a.学号,a.姓名,c.课程编号,c.课程名称
from 学生表 a,选课表 b,课程表 c
where a.学号=b.学号
and b.课程编号=c.课程编号
and a,学号 in (
select a.学号
from 选课表 a ,课程表 b
where a.课程编号=b.课程标号
and b.课程名='数据库')

用这个试试吧,可能有的逗号是字符下的,执行时有问题你改下。至于你的程序,没看见你关联到学生表啊,怎么就能用学生表的姓名字段呢
参考技术A 你没有关联学生表。姓名是在学生表里面的。所以人提示姓名无效。 参考技术B 建议你用子查询比较好的!连接查询又是方便但是看的死人的!

以上是关于SQL:查询每门课程的课程名、选课学生姓名及其学号,选课人数的主要内容,如果未能解决你的问题,请参考以下文章

sql查询,求解

关于学生,课程,选课三张表的sql查询

写一个SQL语句,查询选修了5门课程的学生学号和姓名

sql,查询每门课程最高分的学生的学号,课程号,成绩。再一张表里

SQL查询每门课程最高分学生的学号,课程号,成绩

有一个学生数据库,有以下关系模式构成: 学生(学号,姓名,性别,年龄,所在系)