SQL:查询至少修读s4所修读的所有课程的学生

来源:百度知道 编辑:UC知道 时间:2024/05/12 18:29:15
学生S(sno,sn,sd,sa)学号,姓名,系别,年龄
课程C(cno,cn,pno)课程号,课程名,预选课程
选课SC(sno,cno,g)学号,课程号,成绩
”至少“怎么从语句上体现?
对照:查询至少修读s5所修读的一门课的学生学号
一个是至少修读一门,一个是至少修读所有,怎么区别?暂无法理解。
第二个问题答案:
SELECT SC1.SNO
FROM SC SC1,SC SC2
WHERE SC1.CNO=SC2.CNO AND SC2.SNO='S5'
这怎么理解至少选修 1门啊?

根据你的问题看你不是写不来语句,而是理解问题,所以我就不写语句了,解释解释这区别吧(其实你问得都不是太清楚,我尽力吧)。这里假设符合条件的结果是S6(当然结果很可能不是一个人,尤其“至少修读一门”的结果)。
从表中选出“至少修读一门”S5所修的课程意思是S6所选修的课程中至少有一门和S5是一样的(可多可少)。
从表中选出“至少修读所有”S5所修的课程意思是S6所选修的课程一定包含了S5所选的所有课程(可能多但绝对不能少)。
如果还有余问请发消息给我

这个是一个嵌套查询 查询的条件是选修了s4的人 然后通过课程c这个表调用选了s4的人的课程号 通过这个课程号 在选课sc中调用它的学号 用这个学号来查找他的姓名

select sn from s
where sno = (select cno from sc
where cno = (select cno
from c
where pno = s4))

不知道对不对 你试试。。

SELECT SC1.SNO
FROM SC SC1,SC SC2
WHERE SC1.CNO EXIST(SELECT SC1.CNO FROM SC SC1,C C1 WHERE SC1.CNO=C1.CNO AND C1.CNO='S4' ) AND SC2.SNO='S5'