首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

sql的一个高级查询有关问题

2012-03-12 
sql的一个高级查询问题create table student(sno char(10) primary key, --学号sname nvarchar(20),--姓名

sql的一个高级查询问题
create table student(
 sno char(10) primary key, --学号
 sname nvarchar(20), --姓名
 ssex bit, --性别
 birthdate smalldatetime, --出生日期
 sdept varchar(10) --所属院系
)
create table course
( cno char(6) primary key, --课程号
  cname nvarchar(20), --课程名
  ccredit int, --学分
  pcno char(6) --先行课课程号
)
create table sc
(
  sno char(10),--学号
  cno char(6), --课程号
  grade int, --课程成绩
  primary key (sno,cno)
这个是3张表
问题-查询各门课程的最高分的的学生情况,要求列出学号、姓名、课程号、课程名、该课程的最高分的成绩
怎么实现这个呢 我想了好长时间 不晓得如何实现

[解决办法]
这样理解:

SQL code
--先是三表连接查询,这没什么复杂的,最正常的三表连接:select a.sno,a.sname,c.cno,c.cname,b.gradefrom student a inner join sc b on a.sno=b.sno inner join course c on c.cno=b.cno--条件:因为要找的是该课程的最高分,因此,条件是:--不存在这样一种情况,即sc表中没有cno与当前连接查询中的那个cno相同,--且成绩大于当前查询那条记录的成绩的where not exists(select 1 from sc where cno=b.cno and grade>b.grade) 

热点排行
Bad Request.