2016-05-12 1 views
-1

私は典型的な方法で私のデータを提示するクエリーをしようとしています。説明する最も簡単な方法はとても例である:saparateクエリーを1つに接続する

ヘッダ:

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、表2及びヘッダが接続されていません。出力として、私は賞賛するでしょう:

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

など。

どのように対処するには?私は、クロス結合、ユニオンを使用しようとしていました。私はいくつかのヒントをくれますか?

多分SQLを使用するのは不可能でしょうか?手続き/関数を作成する必要がありますか?

答えて

2

union allを使用して行を組み合わせることができます。そして、あなたはorder byを使用してrow_number()またはrownumと順番にそれらを使用して値をインターリーブすることができますので、

SELECT TITLE, NUMBER_THEATER, PRICE  
FROM FILM, THEATER; 

:あなたは出力に、ここでは異なる表内の一部のデータのコード例をしたい場合

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

だけCROSS JOINを使用することをお勧め出力は内部のデータになります。

TITLE,Number_THEATERおよびPRICE

注:とTHEATERは異なるテーブルです、この便利なことを望みます。

関連する問題