我很长时间以来一直只想到了一下一种方法写sql语句。
问题描述:有一个表(表一)中存的是人员的基础数据,字段有“code(人员编码)”、“name(人员名称)”等。在另一个表(表二)中,有几个关于人员的字段,存的都是编码,如“student”、"teacher"等。我想写一个sql语句,根据表二中的人员编码同时选出几个人员的名称,除了下面我写的还有没有更高效的方法?
各位大虾帮帮我,谢谢!
我写的sql:(其思想为先建立一个表,列出code,再把该表join表一,从join后的表中再选,有多少code,join多少次表一,效率太差)
select 学生,d.name from (
select a.name as 学生,b.teacher as 老师 from 表一 a inner join
表二 b on a.code = b.student
) c
inner join 表一 d on c.teacher=d.code
---------------------------------------------------------------
SELECT a.student,b.name as studname,a.teacher,c.name as teachername
FROM 表二 a,表一 b,表一 c WHERE a.student = b.code AND a.teacher = c.code
---------------------------------------------------------------
SELECT a.student,b.name as studname,a.teacher,c.name as teachername
FROM 表二 a,表一 b,表一 c WHERE a.student = b.code AND a.teacher = c.code
同一楼上的老兄所说的,我想也没有其他的更好的东西了!
---------------------------------------------------------------
select t1.name as 学生,t3.name as 老师
from tab2 t2 join tab1 t1 on t1.code=t2.student
join tab1 t3 on t3.code=t2.teacher