有3个表S,C,SC
S(SNO,SNAME)代表(学号,姓名)
C(CNO,CNAME,CTEACHER)代表(课号,课名,教师)
SC(SNO,CNO,SCGRADE)代表(学号,课号成绩)
问题:
1,找出没选过“黎明”老师的所有学生姓名。
2,列出2门以上(含2门)不及格学生姓名及平均成绩。
3,即学过1号课程有学过2号课所有学生的姓名。
请用标准SQL语言写出答案,方言也行(请说明是使用什么方言)。
S(SNO,SNAME)代表(学号,姓名)
C(CNO,CNAME,CTEACHER)代表(课号,课名,教师)
SC(SNO,CNO,SCGRADE)代表(学号,课号成绩)
问题:
1,找出没选过“黎明”老师的所有学生姓名。
2,列出2门以上(含2门)不及格学生姓名及平均成绩。
3,即学过1号课程有学过2号课所有学生的姓名。
请用标准SQL语言写出答案,方言也行(请说明是使用什么方言)。
解决方案 »
- 求助各位:公开环境里用标签的地方偶尔出现JasperException
- 庖丁解牛分词包使用中出现这样的错误提示怎么解决?java.lang.NoClassDefFoundError: net/paoding/analysis/analyzer/PaodingAnalyzer
- 看看这个错误,谢谢
- struts问题,一个jsp页面,单独用浏览器可以访问,但是把这个页面放到frame中,调用就出错
- 郁闷啊,简单的数据库操作出错??????????
- 如何显示在线用户?
- submit 和 onlick 的问题
- 关于日期的问题?
- 我的数据库里既有简体中文, 又有繁体中文, 如何显示的时候不会乱码?
- 新手学习web关于项目发布问题
- 100分求助,fileupload上传大文件,想加上进度条显示上传进程,给些源代码或修改思路
- 使用jspSmartUpload的问题
select SNAME from S where S.SNO <>(select SNO from SC where SC.CNO in (select CNO from C where CTEACHER="黎明"))
select s.sno,s.sname,avg(sc.scgrade) from s,sc where s.sno=sc.sno
and s.sno in (select sno from (select sno,count(sno) scount from sc where group by sno having scgrade<60) where scount>=2)
试试吧,没实验过~~~~
select s.sname from s right outer join sc on s.sno=sc.sno
where sc.cno=1 or sc.cno=2
group by sname
having count(sname)=2
select s.sname from s right outer join sc on s.sno=sc.sno
where sc.cno=1 or sc.cno=2
group by s.sname
having count(s.sname)=2
select s.sname,ss.avgrade from s,(select sno,avg(scgrade) avgrade from sc where sno in (select sno from (select sno,count(sno) scount from sc where scgrade<60 group by sno) where scount>=2) group by sno) ss where s.sno=ss.sno
第二题这个行,我实验过了,就是太长了,没简化~~~
学生 和 选课 为 多对 一的关系
选课 和 老师 分解为 一对多的关系;
1.找出没选过“黎明”老师的所有学生姓名。
SELECT sname
FROM s JOIN sc ON s.sno = sc.sno
JOIN c ON c.cno = sc.cno
WHERE c.cname = '黎明'2.列出2门以上(含2门)不及格学生姓名及平均成绩
SELECT sname
FROM s
JOIN
(SELECT SNO
FROM sc
WHERE sc.scgrade < 60) sct ON s.SNO = sct.SNO
GROUP BY sname
HAVING COUNT (sname) > 2
3.即学过1号课程有学过2号课所有学生的姓名。
SELECT DISTINCT sname
FROM s s
JOIN
(SELECT sname
FROM sc) sct ON s.sno = sct.sno
JOIN
(SELECT cno
FROM c c
WHERE cno = '1' OR cno = '2') ct ON sct.cno = ct.cno
2.列出2门以上(含2门)不及格学生姓名及平均成绩
SELECT sname
FROM s
JOIN
(SELECT SNO
FROM sc
WHERE sc.scgrade < 60) sct ON s.SNO = sct.SNO
GROUP BY sname
HAVING COUNT (sname) > 2
这个没写平均值,呵呵
3.即学过1号课程有学过2号课所有学生的姓名。
SELECT DISTINCT sname
FROM s s
JOIN
(SELECT sname
FROM sc) sct ON s.sno = sct.sno
JOIN
(SELECT cno
FROM c c
WHERE cno = '1' OR cno = '2') ct ON sct.cno = ct.cno
这里的sct.cno好象没有被说明过
select s.sname from s,sc,c where s.sno=sc.sno and c.cno=sc.cno and cteacher not exits("黎明")
3.即学过1号课程有学过2号课所有学生的姓名。
SELECT DISTINCT sname
FROM s s
JOIN
(SELECT sname
FROM sc) sct ON s.sno = sct.sno
JOIN
(SELECT cno
FROM c c
WHERE cno = '1' OR cno = '2') ct ON sct.cno = ct.cno
这里的sct.cno好象没有被说明过在SELECT sname FROM sct 并没有cno列
SELECT DISTINCT sname
FROM s s
JOIN
(SELECT cno,sno
FROM sc) sct ON s.sno = sct.sno
JOIN
(SELECT cno
FROM c c
WHERE cno = '1' OR cno = '2') ct ON sct.cno = ct.cno
在MYSQL上通过
是否应该该为:SC(SNO,CNO,SCGRADE)代表(学号,课号,成绩)
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!