• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:select insertで複数テーブルから値を取得したい)

select insertで複数テーブルから値を取得する方法とは?

このQ&Aのポイント
  • oracle9iの環境でselect insertで複数テーブルから値を取得して、1つのテーブルにinsertすることは可能ですか?具体的なSQL文の書き方を教えてください。
  • Aテーブルの項目o,p,q,r,s,tに、BテーブルとCテーブルからデータを取得してinsertしたいと考えています。
  • BテーブルとCテーブルの主キーであるoとpが一致するデータを参照し、Aテーブルに結合してデータをinsertしたいです。具体的なSQL文を教えてください。

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

  • ベストアンサー
回答No.2

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。

kou-_-kou
質問者

お礼

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

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • SaKaKashi
  • ベストアンサー率24% (755/3136)
回答No.1

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

kou-_-kou
質問者

補足

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

すると、全ての回答が全文表示されます。

関連するQ&A

  • 別テーブルからselectした値を他のテーブルにinsertしたいのですが、上手くできません

    以下のように行ったのですが、 全ての値が別テーブルにinsertされません。 $sql = "SELECT tbl_A.id, tbl_A.data FROM tbl_A "; $rst = mysql_query( $sql ); while ( $col = mysql_fetch_array( $rst ) ) { $sql = "INSERT INTO tbl_B (          date, id, data ) VALUES ( '" . date( 'Y-m-d' ) . "', '" . mysql_real_escape_string( $col['id'] ) . "', '" . mysql_real_escape_string( $col['data'] ) . "' )"; } このやり方では、テーブル内の1つの値しかinsertされません。 selectされた全ての値をinsertするにはどのようにしたら良いのでしょうか? よろしくお願いします。 DB:mysql5 SP:php5

    • ベストアンサー
    • MySQL
  • Insert Into Select での重複について

    DB:SQLServer2000 こんにちは お世話になっております。 トランザクションのテーブルA から ワークのテーブルBへInsert Into Select を使用してデータを格納しているのですが、その際に重複が発生してしまいます。 テーブルA 主キーあり テーブルB 主キーなし Delete B Insert into B select 項目1,項目2,・・・ from A With(Nolock) where 日付項目 = 20080101 テーブルAの主キー項目は全てテーブルBへInsertしており、Insert完了後のテーブルBの中身を見ると、まれに全く同じデータが2件出来ていることがあります。 このInsert into selectが実行されている間に、テーブルAに対して登録更新が行われることもあります。 色々と試してはいるのですが、原因が特定できずに困っております。 もし何かお気づきになられる方がいらっしゃいましたら、ご教示下さい。 よろしくお願い致します。

  • IDENTITY列の複数テーブルへのINSERT

    テーブルAへINSERTをした場合のIDENTITY列の値を 同じトランザクション内で テーブルBの別のフィールドへINSERTしたいのですが、 どのようにSQLを書けばよいのか、困っています。 どうか、ご教示お願い致します。 INSERT INTOTABLE_A (NAME_A) VALUES ('あいうえお') ↓ INSERT INTOTABLE_A (A_ID,NAME_B) VALUES (取得したA_ID, 'さしす') INSERT INTOTABLE_A (NAME_A) VALUES ('かきくけこ') ↓ INSERT INTOTABLE_A (A_ID,NAME_B) VALUES (取得したA_ID, 'たちつ') INSERT INTOTABLE_A (NAME_A) VALUES ('さしすせそ') ↓ INSERT INTOTABLE_A (A_ID,NAME_B) VALUES (取得したA_ID, 'なにぬ') TABLE_A ID NAME_A 5  'あいうえお' 6  'かきくけこ' 7  'さしすせそ' TABLE_B ID A_ID NAME_B 1  5  'さしす' 2  6  'たちつ' 3  7  'なにぬ'

  • SELECT と INSERT の速度

    素人な質問ですみません。 環境:ORACLE 10g ストアドである値をINSERTする場合、 キー重複でEXCEPRIONに飛ばすのと、SELECTで同キーの件数(0 or 1)を取得して、 O件の場合のみ処理を行うのではどちらのほうが速度は上なのでしょう? ちなみに登録されるテーブルのレイアウトは、 項目(1) NUMBER(8)   PK, 項目(2) NUMBER(8)   PK, 項目(3) VARCHAR2(256) PK, 項目(4) NUMBER(2)   PK, 項目(5) NUMBER(8) って感じです。 よろしくおねがいします。

  • Insert文で・・・

    失礼します。SQL初心者なので質問します。 Insert into Aテーブル Select X , Y , Z From Bテーブル というSQLがあり、Aテーブルの列数を3から4にした際、AテーブルへのInsertの項目を、BテーブルからSelectされたX,Y,Z以外に普通の変数αも新たに作成した4つめの項目として同時にInsertしたい場合、どのようなSQLにすれば良いでしょうか? Insert into Aテーブル (Select X , Y , Z From Bテーブル),α みたいに都合良くはいきませんよね??

  • 複数テーブルから全データ取得する際、同カラムあり

    SELECTで複数テーブルから、全カラム値を取得する際、同名カラムがあったとき、指定テーブルの値を取得したいのですが、どうすれば良いでしょうか? ◆前提 ・テーブル「r1」 ・テーブル「t1」 ・テーブル「u1」 ※「r1」「u1」には、同名カラム「z2」あり ◆やりたいこと ・条件一致する全てのデータを取得したい ・但し、「z2」カラムの値は、「r1」テーブルの値を取得したい ◆現状 $sql="SELECT * FROM (`r1`) JOIN `t1` JOIN `u1` ON `r1`.`tid` = `t1`.`tid` And`r1`.`uid` = `u1`.`uid`"; ◆疑問 3つのテーブルから条件一致するデータを全て取得しているのですが、 「r1テーブル」「u1テーブル」に同じカラム名(z2)があるためか、 取得結果のz2内容が、「u1テーブル」の「z2カラム」値となっています(多分…)。 この時、「r1テーブル」の「z2カラム」を取得するには、どうすれば良いでしょうか? (「r1テーブル」の「z2カラム」だけを単独で取得したいわけではなく、「SELECT * 」結果した際の「z2カラム」の値を「r1テーブル」のものにしたいです)

    • ベストアンサー
    • MySQL
  • insert、selectのやり方を教えて下さい

    こんにちは。 すみません、ネットで調べていたのですが、見当もつかなかったので、教えていただけないでしょうか? ---------------------------------------------- テーブル1:t1 c1 char(254)not null unique,c2 int,c3 int あ,3,null い,4,null う,2,null ---------------------------------------------- テーブル2:t2 c1 char(254)not null unique,c2 int,c3 int い,null,9 う,null,12 え,null,13 お,null,11 ---------------------------------------------- 上記の2つのテーブルがあるとします。そのときに、下記のような結果を新たなテーブルに出力するには、どのような、insert、selectが良いのでしょうか? ---------------------------------------------- テーブル3:result c1 char(254)not null unique,c2 int,c3 int あ,3,null い,4,9 う,2,12 え,null,13 お,null,11 ---------------------------------------------- 困っています。お願いします。

  • Access にて DISTINCROW を使用した INSERT SELECT

    お世話様です。 Access2003 VBAにて、DoCmd.RunSQLを使用してSQL文を流す際、 普通のINSERT-SELECT文はOKですが、 そのSELECT文にDISTINCROW句を使用していると、 数百件程度のSELECT結果しかINSERTできません。 本当は数千件のSELECT結果をINSERTしたいのですが、 これを実行した場合、エラーにもならず、1レコードもINSERTされません。 ためしに、DINSTINCTROWではなく、SQL文を変更してDISTINCTにしてみたところ、 2000件以上でもINSERTできました。 DISTINCROW句を使用して数千件でもINSERTできる方法はあるでしょうか? ちなみにSELECT単体ですと、DISTINCTROWを使用していながら、 数千件でも結果を表示できます。 SQL例: str_SQL = " INSERT INTO 結果テーブル(フィールド1, フィールド2, フィールド3)  SELECT DISTINCTROW A.項目1, A.項目2, B.項目1  FROM テーブル1 A, テーブル2 B  (WHERE句はあってもなくても現象変わらず)  ORDER BY A.項目4 ASC, A.項目5 ASC " DoCmd.RunSQL (str_SQL) よろしくお願いいたします。

  • ストアドのselect文で別テーブルのカウントを取得するには

    こんばんは。 以下のようなことをするのにどう記述していいのか わかりません。 入力パラメータ test1,test2に一致するテーブル1のレコードの 項目1と項目2の値と test1,test2に一致するテーブル2のレコードの カウントを 返したいと考えていますがどう記述したら テーブル2のカウントを返せるのかわかりません。 以下、考え中の内容を記述したものです。 テーブルTBL_AとテーブルTBL_Bがある。 TBL_Aの項目はFLD_1,FLD_2,FLD_3 TBL_Bの項目はFLD_1,FLD_2,FLD_3,FLD_4 TBL_AとTBL_Bには同一のフィールドFLD_1,FLD_2があり、 select FLD_1,FLD_2,FLD_3 FROM TBL_A WHERE FLD_1 = test1 AND FLD_2 = test2(select文1) 上記のSQLでTBL_AのFLD_1,FLD_2を取得する ここに、 select count(*) FROM TBL_B WHERE FLD_1 = test1 AND FLD_2 = test2(select文2) このselect文2で取得した値を select文1に接続して値を戻したいのですが やり方がわかりません。 戻したい値はTBL_AのFLD_1,FLD_2,FLD_3とTBL_Bのカウントです。 お分かりになる方教えてください。よろしくお願いします。 なおoracleは9iを使っています。

  • PostgresSQL のSQL文について(SELECT)

    PostgresであるSelect文がわかりません。 以下のテーブルより *KOUMOKU*[テーブル名] SUB1|SUB2|SUB3|SUB4|SUB5|ID_NAME A01 | | | | |大項目1 A01 |B01 | | | |大項目2 A01 |B01 |C01 | | |大項目3 A01 |B01 |C01 |D01 | |大項目4 大項目1~大項目4の値(ID_NAME)を一気に取得する SELECT文がわかりません。 よろしくお願いいたします。

このQ&Aのポイント
  • 印刷の際に自動給紙が手差しになる場合、カセットの1から印刷する方法を教えてください。
  • お使いの環境はWindows10で、接続はbluetoothです。
  • 関連するソフト・アプリや電話回線はありません。
回答を見る

専門家に質問してみよう