2つのテーブル(同じフィールドを持つ)から1つのビューにデータを取得することは可能ですか?基本的に、ビューはデータを1つのテーブルであるかのように表示します。
94633 次
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 に答える