oracleデータベースに2つの表があります。これらの表には、同じ列名と型があります。Oracle表を1つのビューに表示
表1:たとえば コメント、ID、名前
どのように私は1つのビュー内の両方のテーブルからすべてのデータを表示することができます:ID、名前、
表2にコメント?
oracleデータベースに2つの表があります。これらの表には、同じ列名と型があります。Oracle表を1つのビューに表示
表1:たとえば コメント、ID、名前
どのように私は1つのビュー内の両方のテーブルからすべてのデータを表示することができます:ID、名前、
表2にコメント?
なぜ2つの同一のテーブルですか? 「自分を繰り返さないで」何が起こったのか?申し訳ありませんが、私に悪いデザインのような音がします。
2つのテーブルを作成する際にどのような違いがあったとしても、実際には1つのテーブル内の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;
最初の答えでは、t1 x t2の合計行が出力されることに気づきます。あなたはあなたが交渉した数よりも多くの行を得るでしょう。 –
TABLE1 UNION SELECT FROM SELECT * *を使用し、次の2つの列でそれらをしたい場合は、このようなt1.id = t2.id
として2つのテーブルを、結合するために結合条件を持っていますTABLE2
FROM(またはUNIONあなたは重複をする場合は、ALL)
人は通常は重複を望んでいませんが、重複しているすべての行が必要です。このような場合、2つのテーブルはほとんど常に相互排他的です。したがって、UNIONとUNION ALLは同じ回答を返しますが、コストは非常に高くなります。デフォルトで安い選択肢を選び、迷います。 –
私はduffymoが言うことに同意するが、それには相応の理由が、その後がある場合、UNIONはあなたのためにそれを行います。例えば
SELECT id, name, comment FROM Table1
UNION
SELECT id, name, comment FROM Table2
UNIONはほとんどの人が望むものではなく、不要な並べ替えを強制します。 –
select * from table1
union
select * from table2;
UNIONはほとんどの人が望むものではなく、不要な並べ替えを強制します。 –
それは私が変更したくないという、古いアプリケーションです。私はトリガーを持つテーブルから削除されたアイテムを取り出し、それを私の新しいテーブルに入れます。その後、私は現在のアイテムと "削除された"ものといくつかの統計的なことを行います。 – ddejmek
あなたの選択はもちろんですが、表に列を追加する単一のALTERと、付随トリガーやその他のシステム変更についても言及しています。 – duffymo
もう一つの人は、単に質問に答えるのではなく、世界を掃除することに執着していました。なぜ* HE *がテーブルを作ったと仮定しますか?なぜ彼はDDLをすることが許されていると仮定しますか? –