回 帖 发 新 帖 刷新版面

主题:[讨论]请教SQL问题,高手请进

有四张表:
class(clno,clname,number,monitor) 这是班级表,分别有班号,班名,班级人数,班长学号字段;
student(sno,sname,ssex,sage,clno)这是学生表,分别有学号,姓名,性别,年龄,班号等字段;
course(cno,cname,precno) 这是课程表,分别有课号,课名,先修课课号等字段;
sc(sno,cno,score) 这是成绩表,分别有学号,课号,成绩等字段。

现用SQL语言查询选修了“1”,“3”,“5”三门课程的学生姓名。我用如下语句:

select sname from student where sno = (select sno from sc where cno in('1','3','5'))

老师说不对,我考虑了很久,都觉得正确。请问高手,这个句子真的错了吗?

回复列表 (共8个回复)

沙发

怎么高手都哪儿去了? 没人理我,先顶个!

板凳

关键是‘三门’——应该是至少选了三门,你那个连仅选一门的都进来了
你在想想?

3 楼

谢谢大哥,那怎样写句子才把至少三门课都选了的人查出来?请您详细点好吗?

4 楼

语法不对吧

5 楼

请大哥说具体点,我很菜的,谢谢!

6 楼

这坛子人气不行啊,我的题应该不算难吧?怎么没人给看看.诺大个坛子,没几个人,除了吵架的砖家,就是看热闹的行家!唉,郁闷!

7 楼

[color=0000FF][size=3]
    题应该不算难,语法就是有问题.所以将四张表及少量简单数据:
class(clno,clname,number,monitor) 这是班级表,分别有班号,班名,班级人数,班长学号字段;
student(sno,sname,ssex,sage,clno)这是学生表,分别有学号,姓名,性别,年龄,班号等字段;
course(cno,cname,precno) 这是课程表,分别有课号,课名,先修课课号等字段;
sc(sno,cno,score) 这是成绩表,分别有学号,课号,成绩等字段。
    email传过来,给你解决要求的问题[/size][/color]

8 楼

谢谢楼上大哥,我的数据在SQL SERVER里,没法导出,我经过一晚上的实验,终于做好了:

select sname from student s where sno in (select sno from sc where cno='1') and sno in (select sno from grade where cno = '3') and sno in (select sno from grade where cno='5') and (select count(*) from grade where sno =s.sno)=3


我来回复

您尚未登录,请登录后再回复。点此登录或注册