今天看书也想过这个问题,这是一个完全连接的问题,但是我不会...
:(
试试:
select * from 
(select ....) s1,
(select ....) s2 
where s1.no=s2.no(+)
union 
select * from 
(select ....) s1,
(select ....) s2 
where s1.no(+)=s2.no;

解决方案 »

  1.   


    select * from
    (select ....) s1 full join
    (select ....) s2 on s1.no=s2.no
      

  2.   

    以下9i下适用:
    select ... from (select ....) s1 full outer join (select ....) s2 on s1.no=s2.no
      

  3.   

    我又想了想,想这样做:在where语句中判断一下s1有没有纪录,如果有就s1.no=s2.no(+) 如果没有就s1.no(+)=s2.no
    sql伪语言如下:
    select * from 
    (select ....) s1,
    (select ....) s2 
     if exists(s1) 
    then  
    where s1.no=s2.no(+) 
    else
    where s1.no(+)=s2.no;
    但不知道怎莫写,上面那样写老报错,请大家帮我看看
      

  4.   

    你试试这样就应该可以.
    select * from 
    (select ....) s1,
    (select ....) s2 
    where s1.no(+)=s2.no;
      

  5.   

    好象 9i 以下的版本不运行 (+)=  啊,,我用的是 8i ,正头痛左连接的问题,使用 union 当然是可以解决的,但是解决不了一些排序问题,闷