| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 745 人关注过本帖
标题:[求助]请问一句sql语句
只看楼主 加入收藏
zhulei1978
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:53
帖 子:1351
专家分:1200
注 册:2006-12-17
结帖率:100%
收藏
 问题点数:0 回复次数:10 
[求助]请问一句sql语句

student表:
学号 姓名
1 张雨
2 李芳
3 赵群
4 陈真
5 霍元甲
6 张丽
7 李丽

course表:
课程号 课程名
1 高等数学
2 英语
3 电子技术
4 C语言
5 计算机应用技术

grade表:
学号 课程号 成绩
1 1 90
1 2 100
1 3 80
2 1 75
2 2 85
2 3 90
3 2 85
3 3 95
4 3 97
6 2 90
7 2 95

sql语句:
SELECT 姓名,专业,课程名,成绩
FROM student,grade,course
where 成绩 in (select max(grade.成绩) from grade group by 课程号)
and student.学号=grade.学号 and course.课程号=grade.课程号

我想找出每门课程中成绩最高的学生的并输出姓名,专业,课程名和课程号
但是输出的结果是:
张雨 自动化 高等数学 90
张雨 自动化 英语 100
李芳 机械工程 电子技术 90
张丽 机械工程 英语 90
陈真 机械工陈 电子技术 97

请问应该如何修改sql语句。

搜索更多相关主题的帖子: sql 语句 
2007-10-22 20:20
dhdhzzw
Rank: 1
等 级:新手上路
帖 子:949
专家分:0
注 册:2007-8-13
收藏
得分:0 

不对么?我看就是这样输出的阿。。。

2007-10-23 11:33
绿梦
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2007-10-13
收藏
得分:0 
你是不是少给了一个表?
2007-10-23 11:43
中国男孩
Rank: 1
等 级:新手上路
帖 子:291
专家分:7
注 册:2006-3-19
收藏
得分:0 

我觉得你用英文要好些?


我很想把计算机学好!!
2007-10-23 11:44
cainiao158
Rank: 1
等 级:新手上路
威 望:1
帖 子:157
专家分:0
注 册:2007-9-14
收藏
得分:0 
SELECT 姓名,专业,课程名,成绩 好像3个表中没有专业这个字段!!

要想飞的更高,就把地平线忘掉!
2007-10-23 12:11
tianyu123
Rank: 1
等 级:新手上路
威 望:2
帖 子:576
专家分:0
注 册:2007-8-26
收藏
得分:0 
来个嵌套SQL语句就可以了,试试!

可能有更简单的!

[CODE]<%
set rs=server.createobject("adodb.recordset")
sql="select 课程号,max(成绩) as num from grade group by 课程号"
rs.open sql,conn,1,1
do while not rs.eof
set rst=server.createobject("adodb.recordset")
sql="select 姓名,课程名,成绩 from student,grade,course where student.学号=grade.学号 and course.课程号=grade.课程号 and 课程号="& rs("课程号") &" and 成绩="& rs("num") &""
rst.open sql,conn,1,1
if not(rst.bof and rst.eof) then
do while not rst.eof
response.write rst("姓名")&"&nbsp;"
response.write rst("课程名")&"&nbsp;"
response.write rst("成绩")&"<br>"
rst.movenext
loop
rst.close
set rst=nothing
end if
rs.movenext
loop
rs.close
set rs=nothing
conn.close
set conn=nothing
%[/CODE]

[此贴子已经被作者于2007-10-23 13:05:02编辑过]


改变一切,须从改变观念开始!
2007-10-23 12:23
madpbpl
Rank: 4
等 级:贵宾
威 望:11
帖 子:2876
专家分:244
注 册:2007-4-5
收藏
得分:0 

楼主想得到什么样的结果呢?
是不是只有下面三项数据?
张雨 自动化 高等数学 90
张雨 自动化 英语 100
陈真 机械工陈 电子技术 97

2007-10-23 12:37
madpbpl
Rank: 4
等 级:贵宾
威 望:11
帖 子:2876
专家分:244
注 册:2007-4-5
收藏
得分:0 
sql ="select min(课程名) as 课程名,min(姓名) as 姓名,min(grade.学号) as 学号,max(grade.成绩) as 成绩,grade.课程号 from grade,course,student where student.学号=grade.学号 and course.课程号=grade.课程号 group by grade.课程号"
2007-10-23 21:49
tianyu123
Rank: 1
等 级:新手上路
威 望:2
帖 子:576
专家分:0
注 册:2007-8-26
收藏
得分:0 
以下是引用madpbpl在2007-10-23 21:49:23的发言:
sql ="select min(课程名) as 课程名,min(姓名) as 姓名,min(grade.学号) as 学号,max(grade.成绩) as 成绩,grade.课程号 from grade,course,student where student.学号=grade.学号 and course.课程号=grade.课程号 group by grade.课程号"

学习。。。


改变一切,须从改变观念开始!
2007-10-24 16:52
tianyu123
Rank: 1
等 级:新手上路
威 望:2
帖 子:576
专家分:0
注 册:2007-8-26
收藏
得分:0 
以下是引用madpbpl在2007-10-23 21:49:23的发言:
sql ="select min(课程名) as 课程名,min(姓名) as 姓名,min(grade.学号) as 学号,max(grade.成绩) as 成绩,grade.课程号 from grade,course,student where student.学号=grade.学号 and course.课程号=grade.课程号 group by grade.课程号"

好像有问题呀!

当课程名,姓名或学号中存在可以区分大小的字符时会出现错误统计!

假设表中有如下数据:

姓名 课程名 成绩

张三 数学 90
李四 数学 100

那么统计后会出现下面的结果:

姓名 课程名 成绩

张三 数学 100


改变一切,须从改变观念开始!
2007-10-24 17:14
快速回复:[求助]请问一句sql语句
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018864 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved