有a表和b表 其中a表中有字段a1,a2,a3,a4 b表中有字段b1,b2,b3,b4 有个查询需求 查处a表里a1,a2字段等于b表中b1,b2的所有数据, 最后查询的结果是以这种格式显示的查询结果:
a1    a2  a3    a4  b1   b2   b3   b4
X     X   X     X   X    X    X     X      --这里数据为相等的数据(满足a表a1,a2等于b表中的b1,b2的条件)
X     X   X     X   X    X    X     X      --这里数据为相等的数据(满足a表a1,a2等于b表中的b1,b2的条件) 
X     X   X     X   X    X    X     X      --这里数据为相等的数据(满足a表a1,a2等于b表中的b1,b2的条件)
X     X   X     X  null null null null     --这里为a表里剩余的条件
X     X   X     X  null null null null     --这里为a表里剩余的条件
X     X   X     X  null null null null     --这里为a表里剩余的条件
null null null null X  X  X   X    X       --这里为b表里剩余的条件
null null null null X  X  X   X    X       --这里为b表里剩余的条件
null null null null X  X  X   X    X       --这里为b表里剩余的条件请问大家 只用SQL查询语句 该怎么写了??? 最后显示格式要为上面那种哦!

解决方案 »

  1.   

    这个看起来就是全连接吧
    select a.a1,a.a2,a.a3,a.a4,b.b1,b.b2
    from a full join b
    on a.a1=b.b1 and a.a2=b.b2
      

  2.   

    select a.a1,a.a2,a.a3,a.a4,b.b1,b.b2
    from a,b
     a1=b1(+) and a2=b2(+)
    union
    select a.a1,a.a2,a.a3,a.a4,b.b1,b.b2
    from a,b
     a1(+)=b1 and a2(+)=b2
      

  3.   

    那只是排序问题了
    加个
    order by case when a1 is not null and b1 is not null then 1 
      when a1 is not null then 2 else 3 end