2017-08-25 5 views
0

私は初心者のSQLに関する知識があり、SQLでこれが可能かどうか疑問に思っています。ループのSQL結合?

SQLクエリ1 >>

select distinct(id) as active_pod from schema_naming 

クエリ1つの出力>>

active_pod 
DB_1 
DB_2 
... 
DB_20 

SQLクエリ2 >>

select * from DB_1.mapping UNION 
select * from DB_2.mapping UNION 
.... 
select * from DB_20.mapping UNION 

によりSQLの私の限られた知識を、私は」現在#1のクエリが実行されており、毎回クエリ2のDB_1、DB2、.. DB_20が変更され、#2が実行されます。

しかし、これは1つのクエリでこれが可能かどうか疑問に思っていたので、#2クエリでDB番号を手動で変更する必要はなく、すべての行を結合する必要はありません。このような

何か...(しかし、労働組合をどうするかわからない)

select * from { 
select distinct id from schema_naming}.user_map 

誰かがこれに光を当てることができればそれは素晴らしいことだろう。 (私はOracle SQL上でこれをしようとしています)

ありがとうございます。

+0

オラクルタグを付けてください – maSTAShuFu

+0

何を達成したいですか? – maSTAShuFu

+1

データベース間に 'mapping'テーブルのコピーがたくさんあるのはなぜですか?これは悪いデザインの問題のようです。 – Phil

答えて

0

これは間違いなくハックですが、より良い解決策が提案されるまで、あなたの人生は楽になるかもしれません。基本的にクエリを使用して2番目のクエリを生成します。必要な手作業で編集するだけで、最後の行に不要なUNIONが削除されます。

SELECT 'SELECT * FROM ' || ACTIVE_POD || '.MAPPING UNION' AS QUERY 
FROM SCHEMA_NAMING 

結果:

SELECT * FROM DB_1.MAPPING UNION 
SELECT * FROM DB_2.MAPPING UNION 
SELECT * FROM DB_3.MAPPING UNION 
SELECT * FROM DB_4.MAPPING UNION 
SELECT * FROM DB_5.MAPPING UNION 
SELECT * FROM DB_6.MAPPING UNION 
SELECT * FROM DB_7.MAPPING UNION 
SELECT * FROM DB_8.MAPPING UNION 
SELECT * FROM DB_9.MAPPING UNION 
SELECT * FROM DB_10.MAPPING UNION 
SELECT * FROM DB_11.MAPPING UNION 
SELECT * FROM DB_12.MAPPING UNION 
SELECT * FROM DB_13.MAPPING UNION 
SELECT * FROM DB_14.MAPPING UNION 
SELECT * FROM DB_15.MAPPING UNION 
SELECT * FROM DB_16.MAPPING UNION 
SELECT * FROM DB_17.MAPPING UNION 
SELECT * FROM DB_18.MAPPING UNION 
SELECT * FROM DB_19.MAPPING UNION 
SELECT * FROM DB_20.MAPPING UNION 
2

あなたはこのような何かを取得しようとしていますか?

BEGIN 
For i in (SELECT 'SELECT * FROM ' || ACTIVE_POD || '.MAPPING UNION' AS QUERY 
FROM SCHEMA_NAMING) loop 
dbms_output.put_line(i.query); 
end loop; 
END 

あなたのクエリはあなたのIDEの出力ウィンドウに表示されます。

SELECT 'SELECT * FROM ' || active_pod || '.' || 'Mapping UNION' 
FROM 
(
select distinct(id) as active_pod from schema_naming 
) as DT; 
+1

を参照してください。実際には、私は、ユニオン全体の出力を返す単純なクエリを探していました。私はこれが動的クエリでのみ実行できると思うようになりますが、上記の連結トリックは非常に知っています!ありがとうございました! – user1486507

0

はまた、PL/SQLブロックを使用します。