我这有两张表t_base和t_team
t_base:
id  oldteamno  newteamno
    1           2
t_team:
no  name
1   数学
2   语文现在我想查询一条记录的原组名和新组名,结果类似于
2009  数学  语文请问这sql语句该怎样写?

解决方案 »

  1.   


    select a.id,b.name,c.name
    from t_base a,t_team b,t_team c
    where a.oldteamno=b.no
    and a.newteamno=c.no
      

  2.   

    如果数据量不大的话建议写个带返回值的函数
    或者
    select id,
          (select name from t_team where no = oldteamno) oldteamno,
          (select name from t_team where no = newteamno) newteamno
    from t_base
      

  3.   

    或者SQL>select t.id, (select t1.name from t_team t1 where t1.no=t.oldteamno) oldteamno, (select t2.name from t_team t2 where t1.no=t.newteamno) newteamno from t_base t;性能和上面有些差异。
      

  4.   

    如果就数学或语文,或者很少的话,建议:
    select id,case oldteamno when 1 then 数学 else 语文 end oldteamname,case newteamno when 1 then 数学 else 语文 end newteamname from t_base如果科目很多,那么可用子查询。
      

  5.   

      select a.id,a.oldteamname,b.newteamname from 
      
      (select t_base.id id,t_team.name oldteamname  from  t_base,t_team where t_base.oldteamno=t_team.no) a,
      (select t_base.id id,t_team.name newteamname  from  t_base,t_team where t_base.newteamno=t_team.no) b   where a.id=b.id