找champion寻champion
请问如何找出某个项目冠军的名字,
如何找出总积分最高的系名。
因为比较难,我认为,所以我只好借助视图。可如
create view champion
as
select 项目编号,max(积分)
from 成绩
group by 项目编号
却不能找出运动员编号。
create table 运动员
( 运动员编号 char(4)primary key ,
运动员姓名 char(20) not null,
运动员性别 char(2)check (运动员性别 in( '男 ', '女 ')),
所属系名 char(20) not null
)
create table 项目
( 项目编号 char(4)primary key,
项目名称 char(20),
项目比赛地点 char(10)
)
create table 成绩
( 运动员编号 char(4),
项目编号 char(4),
积分 smallint check(积分 in(6,4,2,0)),
primary key(运动员编号,项目编号),
foreign key (运动员编号) references 运动员(运动员编号)
on update cascade
on delete cascade,
foreign key (项目编号) references 项目(项目编号)
on update cascade
on delete cascade
)
------解决方案----------------------先创建这样一个视图vi
create view vi
as
select c.项目编号
,x.项目名称
,c.运动员编号
,y.运动员名称
,y.运动员性别
,y.所属系名
,c.积分
from 成绩 c join 运动员 y
on c.运动员编号=y.运动员编号
join 项目 x
on c.项目编号=x.项目编号
--某个项目冠军的名字,比如“男子跳高”
select 运动员姓名
from vi
where 积分=(select max(积分) from vi where 项目名称= '跳高 ' and 运动员性别= '男 ')