こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

select insertで複数テーブルから値を取得したい

環境:oracle9i

select insertで、2つのテーブルから値を取得して、1つのテーブルにinsertすることは可能でしょうか?
たとえば、以下の場合、どのようなSQL文を書けばよいか、アドバイスいただけますでしょうか。
よろしくお願いします。

insertしたいテーブル:A
Aテーブルの項目:o,p,q,r,s,t

値を取得するテーブル:B,C
Bテーブルの項目:o,p,q,r
Cテーブルの項目:o,p,s,t

oとpが主キーになっていて、それらが一致するBとCのデータを
あわせて、Aにinsertしたいと思っています。

insert into A(o,p,q,r,s,t)
select
このあと、どのように書けばよいのかがわかりません。

投稿日時 - 2009-11-03 10:19:32

QNo.5418251

困ってます

質問者が選んだベストアンサー

insert into A(o,p,q,r,s,t)
select B.o,B.p,B.q,B.r,C.s,C.t
from B,C
where B.o=C.o and B.p=C.p;

って感じかと。普通に問合せ文を書くだけですよ。
問合せ文自体は、内部結合だろうが外部結合だろうが何でもOK。

投稿日時 - 2009-11-03 14:36:01

お礼

insert into の後ろにつけるselect文は、通常のselect文と同じと考えてよいのですね。
大変参考になりました。ありがとうございました。

投稿日時 - 2009-11-03 18:00:10

このQ&Aは役に立ちましたか?

7人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

趣味ですか、仕事ですか?仕事なら本を買えば一杯情報が載ってますよ。
insert into A(o,p,q,r,s,t)
のo,p,q,r,s,tはA,B,Cのどのテーブルの値を入れるのでしょうか?
それがわからないと書けませんけど。

投稿日時 - 2009-11-03 10:23:43

補足

説明不足で大変失礼しました。
Aには、1件もレコードが入っておらず、BとCで主キーo,pが一致するものを合体させてAにinsertしたいと考えています。
項目o,pについては、テーブルBから取得。(主キーを一致させるのでCでもかまいません)
項目q,rについては、テーブルBから取得。
項目s,tについては、テーブルCから取得。
上記のように考えております。

投稿日時 - 2009-11-03 13:01:44

あなたにオススメの質問