数据库(sql2000)有两个数据表:
代码表 ta 字段 code 代码
          名称 name 名称
业务表 tb  其中有2个以上字段为 代码,这里假设有3个子段 code1 ,code2, code3
代码对应的名称在表ta中请问 如何一次读取 3个字段对应的名称我现在的做法是:select name1,name2,name3 from
 ( select code1,code2,code3 from ta ) as a 
left join
 ( select code,name as name1 from tb )as b on b.code = a.code1
left join
 ( select code,name as name2 from tb ) as c on c.code = a.code2
left join 
  ( select code,name as name3 from tb ) as d on d.code = a.code3 其中name1 ,name2 ,name3对应3个字段的名称,但我感觉就是效率太低
不知道有什么更好的方法

解决方案 »

  1.   

    select a1.name,a2.name,a3.name
    from tb as b,ta as a1,ta as a2,ta as a3
    where b.code1=a1.code and b.code2=a2.code and b.code3=a3.code
      

  2.   

    那就没有办法,除了上面的观点之外!!
    为什么想在单一记录上非要体现三个name呢?采用记录集循环获取不行吗?
      

  3.   

    想请教一下,leftie,你的写法和我的相比,我的感觉是差不多,不知道效率怎么样to  lanborcy:
    至于用视图,在做项目中,好像没这个必要,如果是存储过程,不知道怎么写,实际需要是:(打个比方)一个人事系统中,一名员工,有一个工号,在另外一个表中有职称代码和名称,因为一个人可能有多个职称,而在个人的基本信息表中一般都存放着代码,所以在查看个人信息时就遇上以上问题,
    如果查看一批人的信息,就要考虑效率问题了记录集循环获取的话,效率太低了
    用视图的话,一般程序设计不允许
      

  4.   


      同意 Leftie(Leftie)。
      

  5.   

    期望大家考虑一下效率问题,
    因为如果是一个大公司,例如国企,有上万人,有上万数据量的话,查询一批数据效率是很关键的thanks
      

  6.   


     嗯,Leftie(Leftie) 的写法如果用SQL编辑器转换,其实就是楼上的写法。 这个效率是高的了,楼主不必苛求了。 最有效率的是只有一个select 的查询,
     但是在一个稍微复杂一点的系统中是木有这么简单的事情。
      

  7.   

    我也是这么想的,不过我想到要反复从一个表中多次取数据,就想有没有更好的办法,
    以前在做项目是遇到过一个表中取了6次数据,感觉不舒服希望大家多帮忙想想,今晚6点结贴thanks