天天看点

sql三表查询

情景:

student  id    stname    sex

score   scoreid  stname  birth

course id    coursename  age

简单说明  a,b ,c 三表a.name=b.name a.id=c.id

现在要查 id ,name ,course 

有两种方法:

select a.id,b.name,c. coursename from student a,score b,course c where a.name=b.name and a.id=c.courseid; 

select a.id,b.name,c. coursename from student a inner join score b on a.name=b.name inner join course c on a.id=c.courseid;

变种:

student :id,sname,age

course:id,cname

grade:id,sid,cid,grade

sql三表查询

请用一句sql筛选课程表id=1的学生姓名,科目名称,以及每个学生对应不同科目最高分数:

SELECT 
t.sname,
t.cname,
max(t.grade)
from
(SELECT
  s.id as sid,
  s.name as sname,
  g.grade,
  c.id as cid,
  c.name as cname
from
  student s
inner join grade g on
  g.sid = s.id
inner join course c on
  c.id = g.cid
)t
 where t.cid =1 
group by t.sname,t.cname      

  

sql三表查询
sql