三个表的sql,处理方法

来源:互联网 发布:网络协议sn 编辑:程序博客网 时间:2024/06/06 02:35

有以下两张表,
Class表
classid classname
1 高三(一)班
2 高三(二)班
3 高三(三)班
Student表
studentid   studentName classid
1    张三            2
2     李四           1
3    王五             1
4    赵六             3
5    钱七             2
6     孙九          3
score表
scoreid course studentid score
1 数学 2 99
2 数学 3 60
3 数学 4 80
4 语文 5 79
5 语文 6 58
6  语文 1 66
7  英语 6 76
8 英语 4 87
9 英语 3 100
10 英语 2 69

 

 

要求:
编写SQL语句查询出每个各科班分数最高的同学的名字,班级名称,课程名称,分数

 

 

1、首先,将三个表建立一个视图,可以直接在企业管理器里面建,也可以将下面的代码直接复制到查询分析器里面执行:



2、然后,求 各科 班分数  最高的同学的名字,班级名称,课程名称,分数 ,代码如下:


select classname as 班级,course as 学科,max(score) as 最高分,(select top 1 studentname from scoreview where classname=x.classname and course=x.course order by score desc) as 最好成绩的学生 from scoreview x group by classname,course

 

总结:

 

这种方法比较容易理解,如果不用视图也能实现,有时间了写一下,贴上去

原创粉丝点击