a,b,c三张表,结构相同,用这样的语句连接:(select bm as 部门 from a) union 
                                    (select bm as 部门 from b) union
                                    (select bm as 部门 from c)现在因为abc三表中的bm是代码,要在d表中通过外键bm取到中文的部门的字段,需要怎样写才更有效率? 

解决方案 »

  1.   

    select t1.k1,t2.k2,t3.k3 from
          (select d.bm_name k1 from a,d where a.id=d.id) t1,
          (select d.bm_name k2 from b,d where b.id=d.id) t2,
          (select d.bm_name k3 from c,d where c.id=d.id) t3
          ;
      

  2.   

    如果在一列显示a,b,c表中的部门,可用:select bm_name from d where id in(
           select id from a union
           select id from b union
           select id from c
           );
      

  3.   

    ((select bm as 部门 from a) union 
                                        (select bm as 部门 from b) union 
                                        (select bm as 部门 from c)  )
      

  4.   

    对不起,我的意思是,:(select person as 员工, bm as 部门 from a) union 
                                        (select person as 员工,bm as 部门 from b) union 
                                        (select person as 员工,bm as 部门 from c) ,然后要与d表做联合查询显示出中文的部门名称,是每个查询分别与d表做联合和再union还是先union后再总地与d表做联合?该怎么办?
      

  5.   

    对不起,我的意思是,:(select person as 员工, bm as 部门 from a) union 
                                        (select person as 员工,bm as 部门 from b) union 
                                        (select person as 员工,bm as 部门 from c) ,然后要与d表做联合查询显示出中文的部门名称,是每个查询分别与d表做联合和再union还是先union后再总地与d表做联合?该怎么办? 
      

  6.   

    select d.bm_name 
    from (     
         (select bm as 部门 from a) 
          union 
         (select bm as 部门 from b) 
          union 
         (select bm as 部门 from c) 
         ) t
        ,d
    where t.bm=d.bm
      
      

  7.   

    select d.bm_name  as 部门
    from (    
        (select bm from a) 
          union 
        (select bm from b) 
          union 
        (select bm from c) 
        ) t 
        ,d 
    where t.bm=d.bm 
      

  8.   

    select (select bm_name from d where bm=t.bm)  as 部门 
    from (    
        (select bm from a) 
          union 
        (select bm from b) 
          union 
        (select bm from c) 
        ) t 
      

  9.   

    是3张表 先union后   在与 d表做联合   这样效率更高,看过去更简单。。
    如果每张表先与d表做联合在  union   写起来就 就比较多了
      

  10.   

    先union再连接效率应该会高一点