--参数定义
declare @班级 varchar(10)
set @班级='要查询的班级'--查询
select 课程编号=a.课程号,课程名称=a.课程名,b.任课教师,开课学期=b.学期
from 课程 a join (
select a.课程号,a.学期,b.任课教师
from(
select a.课程号,a.学期
from 修课 a join(
select a.学号
from 学生 a join 班级 b on a.班级编号=b.班级编号
where 年级=@班级
)b on a.学号=b.学号
) a join(
select b.课程,b.学期,任课教师=a.姓名
from 讲授 a join 教师 b on a.教师编号=b.教师编号
)b on a.课程号=b.课程 and a.学期=b.学期
) b on a.课程号=b.课程号

解决方案 »

  1.   

    select 学生.学号,学生.姓名,学生.性别,班级.年级+班级.专业
    from 课程,班级,课程,修课,教师,讲授
    where  学生.班级编号=班级.班级编号 
        and 修课.学号=学生.学号
        and 讲授.教师编号=教师.教师编号 
        and 课程.课程号=修课.课程号
        and 讲授.学期=修课.学期
        and 教师.教师编号='要查询的教师编号'
      

  2.   

    --输入教师编号
    --查询出 他所教的学生(学号,姓名,性别,所在班级)--参数定义
    declare @教师编号 varchar(10)
    select @教师编号='要查询的@教师编号'--查询
    select a.* from(
    select a.学号,a.姓名,a.性别,所在班级=b.年级
    ,c.课程号,c.学期
    from 学生 a
    join 班级 b on a.班级编号=b.班级编号
    join 修课 c on a.学号=c.学号
    ) a join 讲授 b on a.课程号=b.课程 and a.学期=b.学期
    where b.教师编号=@教师编号
      

  3.   

    select 学号,姓名,性别,年级
    from  学生 join 班级 on 学生.班级编号=班级.班级编号
    where 学生.班级编号=(select 学生.班级编号
    from 修课 join 学生 on 修课.学号=学生.学号
    where 修课.课程号=(select 课程.课程号 
    from 讲授 join 课程 on 讲授.课程名=课程.课程名 
    where 讲授.教师编号=输入的教师编号))
      

  4.   

    select 学号,姓名,性别,年级
    from  学生 join 班级 on 学生.班级编号=班级.班级编号
    where 学生.班级编号=(select 学生.班级编号
    from 修课 join 学生 on 修课.学号=学生.学号
    where 修课.课程号=(select 课程.课程号 
    from 讲授 join 课程 on 讲授.课程名=课程.课程名 
    where 讲授.教师编号=输入的教师编号))
      

  5.   

    SELECT DISTINCT c.学号, 姓名, 性别, 班级编号
    FROM (讲授 a JOIN 修课 b ON a.课程 = b.课程号 AND a.学期 = b.学期) 
                 JOIN 学生 c ON b.学号 = c.学号
    WHERE a.教师编号='你要查询的老师编号'
      

  6.   

    不知道我理解对了吗?下面的语句我没有试过。
    select 学号,姓名,性别,班级编号 from 学生 where 学号
    in(
    select 学号 from 修课 where 课程编号 
    in(select 课程  from 讲授 where 教师编号=输入编号)
    )