[pgsql-jp: 28814] Re: 複数テーブルを統合するようなテーブルについて
Tamotsu Ebina
ebina @ pluto.dti.ne.jp
2003年 1月 28日 (火) 19:20:32 JST
海老名@インフォテックです
UNIONで注意しなくてはいけないのは、
各テーブル内に同一行が存在しない事が条件です。
create table test1 (id int, name varchar(100));
create table test2 (id int, name varchar(100));
create table test3 (id int, name varchar(100));
insert into test1 values(1,'ebina');
insert into test2 values(1,'ebina');
insert into test3 values(1,'ebina');
insert into test3 values(1,'ebina');
で
select * from test1
union
select * from test2
union
select * from test3;
の結果は
id | name
----+-------
1 | ebina
となります。
id | name
----+-------
1 | ebina
1 | ebina
1 | ebina
1 | ebina
とはなりません。
UNIONは集合演算ですから、同一の内容の行は
1つしか返ってきません。
テーブル内の行の内容が総てユニークならUNIONでよいと思います。
> 高橋です。
>
> "検索のみ"でしたらVIEWを作成するのはどうでしょう?
>
> INSERT INTO test1 (name) VALUES ('hoge');
>
> CREATE VIEW test AS
> SELECT date, name, add, tel
> FROM test1
> UNION
> SELECT date, name, add, tel
> FROM test2
> UNION
> SELECT date, name, add, tel
> FROM test3;
>
> SELECT * FROM test WHERE name='hoge';
>
> で一応検索できました。
> --
> toshiya @ hh.iij4u.or.jp
pgsql-jp メーリングリストの案内