sql高级查询语句 麻烦大家了

--28)查询选修了课程名为“数据库”的学生的学号和姓名。
select sname,sno
from course,student
where course.cno in(
select cno
from course
where cname='sql') and course.cname=student.sno
group by sname
having count(cname)='sql'

显示错误 出不来

第六行中的 course.cname=student.sno 能相等吗?

count(cname)='sql'这是什么?数量为'sql'?还有,把course和student两个关系贴出来吧。

这个貌似不好解决啊,题主自己看看log吧

count(cname)是统计了,结果是一个数字,不可能等于'sql'

1、group by sname 结果是查不出sno的。
2、count(cname)的结果是哥数字,不可能为"sql"。

select Sno,Sname
from Student
where Sno in 
(select Sno 
 from SC 
 where Cno in 
 (select Cno 
  from Course 
  where Cname='sql'))

试试这个

课程表:
Course(Cno,Cname, Ccredit(学分)),其中Cno为主键
学生选课表:
SC(Sno(学号),Cno(课程),Grade(成绩)),其中Sno,Cno的组合为主键 'sql'是他选的课程是sql

1.先选到sql课程的Cno。
2.在学生选课表中选择Cno出现在1中的记录,然后对Sno执行去重。

    SELECT distinct Sno,Cno
    FROM SC s
    WHERE s.Cno IN( 
        SELECT c.Cno 
        FROM Course c
        WHERE c.Cname='sql'
    )

count(cname)是统计了,结果是一个数字,不可能等于'sql'

having count(cname)='sql'这句先去掉试试