[pgsql-jp: 32290] 他のテーブルのデータにて主テーブルデータを更新
YOKOTA
currency @ lily.freemail.ne.jp
2004年 2月 19日 (木) 13:27:01 JST
YOKOTAです。
主題:他のテーブルのデータにて主テーブルデータを更新
過去ログを検索しましたが探しきれませんでした。
以下の処理をさせたいときのSQL文は以下で合ってますでしょうか。
アドバイスお願いします。
【処理内容】
例として以下の2つのテーブルがあったとします。
Aテーブル構造:()内はカラム名、テーブル名はtable_a
(id) (name) (address) (comment)
管理番号 | お客様名 | 住所 | コメント
------------------------------------------------------
M0001 | お客様A | 東京都港区 | 日中は不在
M0002 | お客様B | 東京都品川区 | 夜間配達希望
M0003 | お客様C | 東京都板橋区 | 午前中在宅
M0004 | お客様D | 横浜市港北区 | 日中は不在
M0005 | お客様E | 東京都渋谷区 |
M0006 | お客様F | 東京都千代田区| 担当者不在
.
.
.
Bテーブル構造:()内はカラム名、テーブル名はtable_b
(id1) (name1) (address1) (comment1)
管理番号 | お客様名 | 住所 | コメント
-------------------------------------------------
M0004 | お客様D | 川崎市多摩区 | 住所変更
M0006 | お客様F | 東京都立川市 | 住所変更
M0015 | お客様XX | 東京都新宿区 | 住所変更
.
.
.
table_a タプル数>table_b のタプル数
両テーブルとも重複する管理番号は無いとします。
主テーブル(以下Aテーブル)にある、指定した列(住所とコメント)のデータを、
他のテーブル(以下Bテーブル)にあるデータ(住所とコメント)で更新する。
ただしその時に、A,B両テーブルに存在する列(管理番号,id)のデータを照合しな
がら行い、
照合の結果一致したタプルのみ更新を行う。
(上記例で言うと管理番号M0001からM0003のデータは更新しない)
【SQL文】
update table_a
set address = (select address1 from table_b )
where id = (select id1 from table_b);
update table_a
set comment = (select comment1 from table_b )
where id = (select id1 from table_b);
どこか間違った箇所があればご指摘お願いします。
--
YOKOTA <currency @ lily.freemail.ne.jp>
pgsql-jp メーリングリストの案内