2009-03-11 18 views
0

oracleデータベースに2つの表があります。これらの表には、同じ列名と型があります。Oracle表を1つのビューに表示

表1:たとえば コメント、ID、名前

どのように私は1つのビュー内の両方のテーブルからすべてのデータを表示することができます:ID、名前、
表2にコメント?

答えて

0

なぜ2つの同一のテーブルですか? 「自分を繰り返さないで」何が起こったのか?申し訳ありませんが、私に悪いデザインのような音がします。

2つのテーブルを作成する際にどのような違いがあったとしても、実際には1つのテーブル内の2つのグループを区別するための別の属性になる可能性があります。

+0

それは私が変更したくないという、古いアプリケーションです。私はトリガーを持つテーブルから削除されたアイテムを取り出し、それを私の新しいテーブルに入れます。その後、私は現在のアイテムと "削除された"ものといくつかの統計的なことを行います。 – ddejmek

+0

あなたの選択はもちろんですが、表に列を追加する単一のALTERと、付随トリガーやその他のシステム変更についても言及しています。 – duffymo

+0

もう一つの人は、単に質問に答えるのではなく、世界を掃除することに執着していました。なぜ* HE *がテーブルを作ったと仮定しますか?なぜ彼はDDLをすることが許されていると仮定しますか? –

2

別々の列が4つ必要な場合は、他の選択肢と同様にエイリアスを使用します。もちろん

create or replace view vw_my_view as 
    select t1.id t1_id 
     ,t1.comment t1_comment 
     ,t2.id t2_id 
     ,t2.comment t2_comment 
    from table1 t1 
    inner join table2 t2 on join condition 
    where filter conditions 

EDITは、あなたのテーブルには、そうでない場合は、ビューの単一の行が何を意味するための方法はありません、何らかの方法でお互いに関係します。そのため、連合

create or replace view vw_my_view as 
    select id 
     ,comment 
    from table1 
    union all    -- use ALL unless you want to lose rows 
    select id 
     ,comment 
    from table2; 
+0

最初の答えでは、t1 x t2の合計行が出力されることに気づきます。あなたはあなたが交渉した数よりも多くの行を得るでしょう。 –

0

TABLE1 UNION SELECT FROM SELECT * *を使用し、次の2つの列でそれらをしたい場合は、このようなt1.id = t2.id

として2つのテーブルを、結合するために結合条件を持っていますTABLE2

FROM(またはUNIONあなたは重複をする場合は、ALL)

+0

人は通常は重複を望んでいませんが、重複しているすべての行が必要です。このような場合、2つのテーブルはほとんど常に相互排他的です。したがって、UNIONとUNION ALLは同じ回答を返しますが、コストは非常に高くなります。デフォルトで安い選択肢を選び、迷います。 –

0

私はduffymoが言うことに同意するが、それには相応の理由が、その後がある場合、UNIONはあなたのためにそれを行います。例えば

SELECT id, name, comment FROM Table1 
UNION 
SELECT id, name, comment FROM Table2 
+0

UNIONはほとんどの人が望むものではなく、不要な並べ替えを強制します。 –

0
select * from table1 
union 
select * from table2; 
+0

UNIONはほとんどの人が望むものではなく、不要な並べ替えを強制します。 –

関連する問題