有2个表
表A:TA
字段
C1,C2,C3

a1,b1,c1
a2,b2,c2
--------------------------
表B:TB
字段(C1是表TA的外键)
C1,C4,C5

a1,d1,e1
a1,d2,e2
a2,d3,e3
a2,d4,e4
---------------------------
我现在想用一个查询语句查出下面的数据:
a1,b1,c1,null,null
null,null,null,d1,e1
null,null,null,d2,e2
a2,b2,c2,null,null
null,null,null,d3,e3
null,null,null,d4,e4

解决方案 »

  1.   

    哈哈,不知道符不符合要求,凑合着用吧~~~select A.*,
           null as c4,
           null as c5,
           A.c1
      from A
    union all        
    select null as c1,
           null as c2,
           null as c3,
           B.c4,
           B.c5,
           B.c1
      from B
     order by 6;
    C1 C2 C3 C4 C5 C1
    -- -- -- -- -- --
    a1 b1 c1       a1
             d1 e1 a1
             d2 e2 a1
    a2 b2 c2       a2
             d3 e3 a2
             d4 e4 a26 rows selected
      

  2.   

    SQL> create table TEST_1
      2  (
      3    C1 VARCHAR2(10),
      4    C2 VARCHAR2(10),
      5    C3 VARCHAR2(10)
      6  )
      7  /
     
    Table created
     
    SQL> create table TEST_2
      2  (
      3    C1 VARCHAR2(10),
      4    C2 VARCHAR2(10),
      5    C3 VARCHAR2(10)
      6  )
      7  /
     
    Table created
     
    SQL> insert into test_1 select 'a1','b1','c1' from dual;
     
    1 row inserted
     
    SQL> insert into test_1 select 'a2','b2','c2' from dual;
     
    1 row inserted
     
    SQL> commit;
     
    Commit complete
     
    SQL> insert into test_2 select 'a1','d1','e1' from dual;
     
    1 row inserted
     
    SQL> insert into test_2 select 'a1','d2','e2' from dual;
     
    1 row inserted
     
    SQL> insert into test_2 select 'a2','d3','e3' from dual;
     
    1 row inserted
     
    SQL> insert into test_2 select 'a2','d4','e4' from dual;
     
    1 row inserted
     
    SQL> commit;
     
    Commit complete
     
    SQL> select * from test_1;
     
    C1       C2       C3
    ---------- ---------- ----------
    a1       b1       c1
    a2       b2       c2
     
    SQL> select * from test_2;
     
    C1       C2       C3
    ---------- ---------- ----------
    a1       d1       e1
    a1       d2       e2
    a2       d3       e3
    a2       d4       e4
     
    SQL> 
    SQL> SELECT T1.C1, T1.C2, T1.C3, T2.C2, T2.C3
      2    FROM TEST_1 T1
      3    FULL OUTER JOIN TEST_2 T2 ON T1.C2 = T2.C2 AND t1.c3=t2.c3
      4  /\
     
    C1       C2       C3       C2       C3
    ---------- ---------- ---------- ---------- ----------
    a1       b1       c1                   
    a2       b2       c2                   
                                     d3       e3
                                     d2       e2
                                     d4       e4
                                     d1       e1
     
    6 rows selected
     
    SQL> 
      

  3.   

    多谢各位的回复!
    但我想出成这样的顺序:
    a1 b1 c1       a1
             d1 e1 a1
             d2 e2 a1
    a2 b2 c2       a2
             d3 e3 a2
             d4 e4 a2
    也就是先出A表的一条数据紧接着出B表关联的相应数据,然后再出A表的下一条数据,再出B表关联的相应数据,以此类推