日期:2014-05-18  浏览次数:20409 次

关于自连接的问题,求高手帮忙!
表的结构如下:
create table test
(学生ID varchar(10),
学生姓名 varchar(10),
课程ID varchar(10),
课程名称 varchar(10),
教师ID varchar(10),
教师姓名 varchar(10),
成绩 int)
go

数据如下:
insert into test values('S3','王五','K4','政治','T4','赵老师',53)
insert into test values('S1','张三','K1','数学','T1','张老师',61)
insert into test values('S2','李四','K3','英语','T3','李老师',88)
insert into test values('S1','张三','K4','政治','T4','赵老师',77)
insert into test values('S2','李四','K4','政治','T5','周老师',67)
insert into test values('S3','王五','K2','语文','T2','王老师',90)
insert into test values('S3','王五','K1','数学','T1','张老师',55)
insert into test values('S1','张三','K2','语文','T2','王老师',81)
insert into test values('S4','赵六','K2','语文','T1','张老师',59)
insert into test values('S1','张三','K3','英语','T3','李老师',37)
insert into test values('S2','李四','K1','数学','T1','张老师',81)
go

查询要求为: 各科的课程名,最高分,最高分的学生姓名,最高分的教师姓名,
最低分,最低分的学生姓名,最低分的教师姓名。
结果要求显示在一起。


------解决方案--------------------

Select a.课程名称,a.最高分成绩,b.学生姓名 最高学生姓名,b.教师姓名 最高教师姓名,
a.最低分成绩,c.学生姓名 最低学生姓名,c.教师姓名 最低教师姓名
From (
Select 课程名称,Max(成绩) 最高分成绩,Min(成绩) 最低分成绩
From test
Group by 课程名称) a
Inner Join Test b on a.课程名称=b.课程名称 and a.最高分成绩=b.成绩
Inner Join Test c on a.课程名称=c.课程名称 and a.最低分成绩=c.成绩