21

2つのテーブル(同じフィールドを持つ)から1つのビューにデータを取得することは可能ですか?基本的に、ビューはデータを1つのテーブルであるかのように表示します。

4

2 に答える 2

35

はい、UNIONを使用しています-

CREATE VIEW vw_combined AS
   SELECT * FROM TABLE1
   UNION ALL
   SELECT * FROM TABLE2

...同じ数の列があり、データ型が各位置で一致している必要があります。

..できれば、JOINを使用して:

CREATE VIEW vw_combined AS
   SELECT * 
    FROM TABLE1 t1
    JOIN TABLE2 t2 ON t2.col = t1.col

ただし、ビューによっては警告したいのですが、具体化されていない場合は、準備されたSQLステートメントのみです。パフォーマンス上の利点はなく、別のビューに基づいてビューを作成すると、パフォーマンスに悪影響を与える可能性があります。また、ビューは脆弱です。ビューは変更される可能性があり、問題があるかどうかはサポートビューを使用するまでわかりません。

于 2010-07-16T17:23:46.910 に答える
2
create or replace view view_name as
select * from table_1
union all select * from table_2

注:ビューの列は、ビューの作成時に設定されます。ビューの作成後にtable_1とtable_2に列を追加しても、view_nameには表示されません。新しい列を表示するには、上記のDDLを再実行する必要があります。

重複する行を単一の行にまとめたい場合(ただし、サーバーでより多くの作業が必要になる可能性があります)。

create or replace view view_name as
select * from table_1
union select * from table_2

一般に、選択リストで使用するのは不適切な形式*ですが、ビューを使用するクエリが必要なものだけを選択すると仮定すると、すべての列に明示的に名前を付ける代わりに、ここで使用します。(特に、table_1とtable_2が変更されたときに列名を追加する必要がないためです。)

于 2010-07-16T17:27:26.493 に答える