S 表一 学员表
Sid 学员id
Sname 学员名称
C 表二 课程表
Cid 课程id
Cname 课程名称
SC 表三 学员选课表
Sid 学员id
Cid 课程id
Grade 成绩
1.查出每个成员的成绩最好课程,三列:学员名称,课程名称,成绩
昨天面试的时候遇到的这个题,看起来比较简单,但是仔细一想关联三个表,项目上没遇到过,比较困惑。求高手指导指导
Sid 学员id
Sname 学员名称
C 表二 课程表
Cid 课程id
Cname 课程名称
SC 表三 学员选课表
Sid 学员id
Cid 课程id
Grade 成绩
1.查出每个成员的成绩最好课程,三列:学员名称,课程名称,成绩
昨天面试的时候遇到的这个题,看起来比较简单,但是仔细一想关联三个表,项目上没遇到过,比较困惑。求高手指导指导
解决方案:10分
select a. Sname,b. Cname,d.Grade
from Sid a, C b,(
select id,
from SC c
where not exists (select 1 from SC where Grade<Grade))d
where a.id=d. Sid and b. Cid=d.Cid
from Sid a, C b,(
select id,
from SC c
where not exists (select 1 from SC where Grade<Grade))d
where a.id=d. Sid and b. Cid=d.Cid
解决方案:40分
select s.sname,c.cname,t.grade from (select * from (select * from sc order by sid,grade desc)t group by sid) t inner join s on s.sid = t.sid inner join c on c.cid = t.cid
解决方案:10分
LZ你好,
select s.sname,c.cname,t.grade
from (select * from (select * from sc order by sid,grade desc)t group by sid) t
inner join s on s.sid = t.sid
inner join c on c.cid = t.cid
select s.sname,c.cname,t.grade
from (select * from (select * from sc order by sid,grade desc)t group by sid) t
inner join s on s.sid = t.sid
inner join c on c.cid = t.cid