[pgsql-jp: 34012] Re: テーブルの結合について
SAKATA Testuo
sakata.tetsuo @ lab.ntt.co.jp
2004年 9月 21日 (火) 09:15:46 JST
おはようございます。坂田@横須賀の丘の上です。
中嶋 wrote:
>はじめて問合せをしますナカシマです。
>初心者なので初心者なりの回答お願いします。
>
>環境は以下の構成で使用しています。
>RedHatLinux7.3
>Postgresql 7.2.3
>
>問題は
>以下のテーブル1、テーブル2が以下のようにあります。
>
>table1とtable2はほぼ同じ内容なのですが、
>
>2つのテーブルを共通する部分だけ単純にid,結合し、
>select分でidを1〜6まで
>以下のselect文を書いてもうまく結合できません。
>どのようにすればよいのでしょうか?
>
>
お望みのものは、結合(join)ではなくて、マージではないかと思います。
>だめだった例)
>select id, name, date, month
> from table1,table2
>where id='3'
>
>(table 1)
>id name year date month
>(text) (text) (text) (text) (text)
>1 A 2004 07 01
>2 B 2004 09 02
>3 C 2004 07 07
>
>(table 2)
>id name year date month second
>(text) (text) (text) (text) (text) (text)
>4 D 2004 07 05 12
>5 A 2004 07 07 34
>6 B 2004 07 14 33
>
>(結合したい形)
>(table3)
>id name year date month
>(text) (text) (text) (text) (text)
>1 A 2004 07 01
>2 B 2004 09 02
>3 C 2004 07 07
>4 D 2004 07 05
>5 A 2004 07 07
>6 B 2004 07 14
>
>以上情報が不足している場合は直ぐに回答いたしますので宜しくお願い致します。
>
>
>
この形の出力が得たいのであれば、
(1)マージしようとする双方のテーブルの型(列のセット)をそろえて、
(2)テーブルをマージする
ことになります。
(SELECT id, name, year, date, month
FROM table2
)
UNION
(SELECT id, name, year, date, month
FROM table3
);
でできるかと思います。
( )で括った箇所が上記の(1)、
キーワードUNIONが(2)に対応します。
idに重複がある場合、などはもう少し処理を追加する必要がありますが…。
ご参考になれば幸いです。
--
坂田 哲夫@NTT サイバースペース研究所
sakata.tetsuo _at_ lab.ntt.co.jp
SAKATA, Tetsuo. Yokosuka JAPAN.
pgsql-jp メーリングリストの案内