跪求大神帮帮忙,想了很久,不知道怎么去完成。
有三张表,A、E、F,比如:表A                                    表E                                     表F
EMPLID  ACID                  ACID    ACID_PAR           EMPLID  ACID   DECR
01            08                      08                                      01            08       AA
02            09                      09                                      02            10       AA
                                          10           09                     
03            11                      11                                       其中表E如果表A有对应的ACID_PAR,就用对应的ACID来找表F;比如表A中的EMPLID 03,在表F中没有对应的,但是结果中也应该显示“”最后应该选出结果:
 EMPLID  ACID   DECR
  01            08       AA
  02            10       AA
  03            11       请问应该怎么去写呢,研究了很久了,写的要run很久,也不出结果

解决方案 »

  1.   


    --  这个意思 ?select * from A
     left join E on A.acid = E.acid
     left join F on A.empid = F.empid;
      

  2.   

     select a.emplid, a.acid, f.DECR
       from a, e, f
      where a.acid = e.acid(+)
        and a.emplid = f.emplid(+)
        order by a.emplid
      

  3.   

    一看结果是2个表叠加在一起的 用  union all 。sql 如下 :看看满不满足条件(目测和你说的结果一样)
    select F.EMPLID emplid, F.ACID acid, F.DECR decr
      from A, E, F
     WHERE A.ACID = E.ACID
       and E.ACID_PAR is not NULL
       and E.ACID = F.ACID
    union
    select A.EMPLID emplid, A.ACID acid, null decr
      from A
     where not exists (select 1 from F where A.EMPLID = F.EMPLID)