SELECT  ...    AI.TYPETITLE  AS  SAREAID, PI.TYPETITLE  AS  SPOSTTITLEID  
FROM  exp_expert    E,  
 E_TYPE_FUNCDESIGNATION  PI,  
E_TYPE_AREA  AI  
WHERE  E.SPOSTTITLEID=PI.TYPEID(+)  
AND  E.SAREAID=AI.TYPEID (+) 
应该这样。

解决方案 »

  1.   

    同时有两个以上外连接的在语意上有歧义如果对于E的一条记录,
     E.SAREAID=AI.TYPEID  满足

     E.SPOSTTITLEID=PI.TYPEID 不满足
    ,E应该返回记录还是返回空?
      

  2.   

    SQL> select * from ta;        ID NAME                N
    ---------- ---------- ----------
             1 aaa                 1
             2 bbb                 1SQL> select * from tb;      ADDR NAME            OTH
    ---------- --------------- ----------
             1 aaa             a1
             2 aaa             a2
             2 bbb             b1SQL> select * from ta,tb where ta.id=tb.addr(+) and ta.name=tb.name(+);        ID NAME                N       ADDR NAME            OTH
    ---------- ---------- ---------- ---------- --------------- ----------
             1 aaa                 1          1 aaa             a1
             2 bbb                 1          2 bbb             b1SQL>
      

  3.   

    to bzszp:
    什么意思?
    楼主是一个表同时外连接倒另外两个不同的表,肯定有歧义。
    (你贴出来的是一个表同时外连接倒另外一个表)
      

  4.   

    sorry,嵌套吧
    SQL> select * from ta;        ID NAME                N
    ---------- ---------- ----------
             1 aaa                 1
             2 bbb                 1SQL> select * from tb;      ADDR NAME            OTH
    ---------- --------------- ----------
             1 aaa             a1
             2 aaa             a2
             2 bbb             b1SQL> select a.addr,a.name,b.id,b.name from (
      2  select tb.addr,tb.name,ta.id ida,ta.name namea from tb,ta where tb.addr=ta.id(+)
      3  ) a,ta b  where a.addr=b.id(+);      ADDR NAME                    ID NAME
    ---------- --------------- ---------- ----------
             1 aaa                      1 aaa
             2 aaa                      2 bbb
             2 bbb                      2 bbbSQL>