--参数定义
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.课程号
from 课程,班级,课程,修课,教师,讲授
where 学生.班级编号=班级.班级编号
and 修课.学号=学生.学号
and 讲授.教师编号=教师.教师编号
and 课程.课程号=修课.课程号
and 讲授.学期=修课.学期
and 教师.教师编号='要查询的教师编号'
--查询出 他所教的学生(学号,姓名,性别,所在班级)--参数定义
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.教师编号=@教师编号
from 学生 join 班级 on 学生.班级编号=班级.班级编号
where 学生.班级编号=(select 学生.班级编号
from 修课 join 学生 on 修课.学号=学生.学号
where 修课.课程号=(select 课程.课程号
from 讲授 join 课程 on 讲授.课程名=课程.课程名
where 讲授.教师编号=输入的教师编号))
from 学生 join 班级 on 学生.班级编号=班级.班级编号
where 学生.班级编号=(select 学生.班级编号
from 修课 join 学生 on 修课.学号=学生.学号
where 修课.课程号=(select 课程.课程号
from 讲授 join 课程 on 讲授.课程名=课程.课程名
where 讲授.教师编号=输入的教师编号))
FROM (讲授 a JOIN 修课 b ON a.课程 = b.课程号 AND a.学期 = b.学期)
JOIN 学生 c ON b.学号 = c.学号
WHERE a.教师编号='你要查询的老师编号'
select 学号,姓名,性别,班级编号 from 学生 where 学号
in(
select 学号 from 修课 where 课程编号
in(select 课程 from 讲授 where 教师编号=输入编号)
)