表名、字段解释
student(学生表)
sc(成绩表)
course(课程表)
sno(学生学号)
cno(课程号)
sname(学生姓名)
一、分析
我们要查询没有学号所有课程的学生的学号和姓名的前提是要知道总的课程数是多少
1、要先统计课程表中的课程数
2、然后统计每个学生掌握的课程数
3、最后看学生掌握的课程数是否与课程表中的总课程数一致
二、实现步骤
1.统计课程表中的课程数
代码如下(示例):
select count(course.cno) AS '总课程数' from course;
2.统计每个学生掌握的课程数
代码如下(示例):
select s.sno,s.sname,count(sc.cno) AS '学生课程数' from student s , sc
where s.sno = sc.sno group by s.sno
3.看学生掌握的课程数是否与课程表中的总课程数一致
代码如下(示例):
select b.sno,b.sname from (select count(course.cno) as zkcs from course) a ,
(select s.sno,s.sname,count(sc.cno) as xskcs from student s,sc where s.sno = sc.sno group by s.sno) b
where a.zkcs = b.xskcs
总结
最好是进行一个逐步的分析,把这个问题一步一步的解开