有以下三个表,请写出查询选修全部课程的学员的姓名和所属单位的SQL语句。
学生表:S(S#,SN,SD),S#代表学号,SN代表学员的姓名,SD代表所属单位
课程表:C(C#,CN),C#代表课程编号,CN代表课程名称
关联表:SC(S#,C#),s#代表学号,c#代表课程编号
 

解决方案 »

  1.   

    select count(*) as num,a.sn
    from
    (
    select s.sn from s,c,sc
    where s.s# = sc.s# and c.c# = sc.c#)a 
    group by a.snnum为你全部课程数量
      

  2.   

    select * from s where not exists(
     select 1 from c where c.c# not in
      (select sc.c# from sc where sc.s#=s.s#)
    )
      

  3.   

    not in 换为not exists ,这样效率更高!
      

  4.   

    select *
      from Student S
     where not exists
     (select 1
              from Course C
             where c.c# not in (select sc.c# from sc where sc.s# = s.s#))学习
      

  5.   


    SELECT S.* FROM S INNER JOIN (
    SELECT s# FROM SC HAVING COUNT(*)=(SELECT COUNT(*) FROM C)
    GROUP BY S#) T
    ON S.S#=T.S#