将saparate查询连接到一个

时间:2016-05-12 11:30:58

标签: sql oracle plsql

我正在尝试以一种典型的方式显示我的数据的查询。最简单的解释方法就是这样的例子:

头:

    SELECT
    '010' header,
    '54' as number1,
    'MAC' sender
    from dual
table1

select
phonenumber,
clientid
from table1


output: 
 phonenumer   clientid
   54234         3
   4234          2
   41211         5

表2

select
    productname,
    productid
    from table2

output: 
 productname productid
   Apple       9
   TV          2

table1,table2和header未连接。作为输出我会怀疑:

010   54  MAC    <- from header
54234 3          <- from query1
      Apple 9    <- from query2
010   54  MAC
4234  2
      TV  2

等等。

如何处理什么?我试图使用交叉连接,联合。你能给我一些提示吗?

使用SQL可能是不可能的?我应该创建一个程序/功能吗?

2 个答案:

答案 0 :(得分:2)

您可以使用union all组合行。然后,您可以使用row_number()rownum对值进行交错,并使用order by对其进行排序:

select header, number1, sender
from ((select header, number1, sender, 1 as priority, NULL as rn
       from header
      ) union all
      (select phonenumber, clientid, NULL, 2, rownum as rn
       from table1
      ) union all
      (select NULL, productname, productid, 2, rownum as rn
       from table2
      )
     ) t
order by priority, rn, header nulls last;

答案 1 :(得分:1)

如果你想在不同的表中输出一些数据,只需建议使用CROSS JOIN示例代码:

SELECT TITLE, NUMBER_THEATER, PRICE    
FROM FILM, THEATER;

所以输出将是

中的数据

TITLENumber_THEATERPRICE

注意:FILMTHEATER是不同的表,希望这有用:)