当前位置: 代码迷 >> Oracle开发 >> 检索全部学生都选修的课程的课程号与课程名 ?解决方法
  详细解决方案

检索全部学生都选修的课程的课程号与课程名 ?解决方法

热度:20   发布时间:2016-04-24 07:35:38.0
检索全部学生都选修的课程的课程号与课程名 ???
数据库的三个基本表 
学生 S(S#,SNAME,AGE,SEX) 
选修 SC(S#,C#,GRADE) 
课程 C(C#,CNAME,TEACHER) 

如何 检索全部学生都选修的课程的课程号与课程名 ?


------解决方案--------------------
SQL code
select a.c#,a.cnamefrom(select c.c#,c.cname,count(s.s#) c_sfrom s,sc,cwhere a.s#=sc.s#and sc.c#=c.C#group by c.c#,c.cname)a,,(select count(s#) all_s from s) bwhere a.c_s=b.all_s
------解决方案--------------------
如果S表的每个S#对应一个学生的。
SQL code
SELECT C#,CNAME FROM C WHERE C# IN(    SELECT C# FROM SC GROUP BY S# HAVING COUNT(1)=(SELECT MAX(ROWNUM) FROM S))
------解决方案--------------------
其实如果不显示学生名字的话,不用关联S 表的
select a.c#,a.cname
from
//下面的是统计每门课程选择的人数
(select c.c#,c.cname,count(sc.s#) c_s
from sc,c
where sc.c#=c.C#
group by c.c#,c.cname)a,
,
//下面的是统计总的学生数
(select count(s#) all_s from s) b
//最后两个结果集关联下,如果第一个结果集中的选择人数=总的学生数,则显示出来
where a.c_s=b.all_s
  相关解决方案