日期:2014-05-17 浏览次数:23286 次
select a.c#,a.cname from (select c.c#,c.cname,count(s.s#) c_s from s,sc,c where a.s#=sc.s# and 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
------解决方案--------------------
如果S表的每个S#对应一个学生的。
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