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

主表和明细表问题,要实现如下功能:
主表:
姓名
张三
李四
王五
。。。。
明细表:
每次考试成绩

现在要实现如下:
姓名     最高成绩

要求:取每个人的最高成绩,并select出来,如果某人没有考试纪录,则考试成绩为空

------解决方案--------------------
把表的结构贴出来
猜一个
select 主表.姓名,a.科目,a.成绩 from 明细表 a inner join 主表 on a.姓名id=主表.姓名id
where not exists(select 1 from 明细表 where 姓名id=a.姓名id and 科目=.a科目 and 成绩> a.成绩 )
------解决方案--------------------
我如果没猜错,阁下莫非也在学SQL,而且用的数据库是XSCJ,表有xs,xs_kc,kc三张表吧~呵呵~~这个好象是道习题,不过我都有点忘了~
凭我记忆力吧~
select xs_kc.学号,max(成绩) as 最高成绩 from xs
inner join xs_kc on xs.学号=xs_kc.学号
group by xs_kc.学号
没有成绩的同学既然没有成绩就没必要显示出来~你还可以用明细参数 cube 或者rollup

------解决方案--------------------
To wojila(阳阳) 同學:
別人要顯示就給人家顯示啦,小改一下,left join
select xs_kc.学号,isnull(max(成绩), 0) as 最高成绩 from xs
left join xs_kc on xs.学号=xs_kc.学号
group by xs_kc.学号
没有成绩的同学既然没有成绩就没必要显示出来~你还可以用明细参数 cube 或者rollup
------解决方案--------------------
select name,max(score)
from tb
group by name