为管理岗位业务培训信息,建立3个表: S (S#,SN,SD,SA) S#,SN,SD,SA 分别代表学号、学员姓名、所属单位、学员年龄 C (C#,CN ) C#,CN 分别代表课程编号、课程名称 SC ( S#,C#,G ) S#,C#,G 分别代表学号、所选修的课程编号、学习成绩 1. 使用标准SQL嵌套语句查询选修课程名称为’税收基础’的学员学号和姓名
2. 使用标准SQL嵌套语句查询选修课程编号为’C2’的学员姓名和所属单位
3. 使用标准SQL嵌套语句查询不选修课程编号为’C5’的学员姓名和所属单位
4. 使用标准SQL嵌套语句查询选修全部课程的学员姓名和所属单位
5. 查询选修了课程的学员人数
6. 查询选修课程超过5门的学员学号和所属单位

解决方案 »

  1.   

    SELECT   SN,SD   FROM   S 
    WHERE   [S#]   IN( 
    SELECT   [S#]   FROM   C,SC 
    WHERE   C.[C#]=SC.[C#] 
    AND   CN=N '税收基础 'SELECT   S.SN,S.SD   FROM   S,SC 
    WHERE   S.[S#]=SC.[S#] 
    AND   SC.[C#]= 'C2 '
    SELECT   SN,SD   FROM   S 
    WHERE   [S#]   NOT   IN( 
    SELECT   [S#]   FROM   SC   
     WHERE   [C#]= 'C5 ') SELECT   SN,SD   FROM   S 
    WHERE   [S#]   IN( 
    SELECT   [S#]   FROM   SC   
    RIGHT   JOIN   C   ON   SC.[C#]=C.[C#] 
    GROUP   BY   [S#] 
    HAVING   COUNT(*)=COUNT(DISTINCT   [S#])) 
    SELECT   COUNT(DISTINCT   [S#]) as C   FROM   SC SELECT   SN,SD   FROM   S 
    WHERE   [S#]   IN( 
    SELECT   [S#]   FROM   SC   
    GROUP   BY   [S#] 
    HAVING   COUNT(DISTINCT   [C#])> 5) 
      

  2.   


    1.select S#,SN from S where S# in (select S# from C,SC where C.CN='税收基础' and C.C#=SC.C#)
    2.select SN,SD from S where S# in (select S# from C,SC where C.C#='C2' and C.C#=SC.C#)
    3.select SN,SD from S where S# in (select S# from C,SC where C.C#<>'C5' and C.C#=SC.C#)
    4.select distinct SN from SC group by C# having count(*)=(select count(*) from C)
    5.select count(distinct SN) from SC
    6.select S#,SN from S where S# in (select distinct SN from SC group by C# having count(*)>=5)不知道对不对,没测。