• ベストアンサー

別テーブルを参照し、その内容を別のテーブルに書き込む

2つのテーブルに存在しているデータを参照し、 取得したデータの結果を3つ目のテーブルに保存する処理をしているのですが // USERのUNIQUEとGAMEのGAME_NOはプライマリーキー select RATE from USER where UNIQUE = xxx select POINT from GAME where GAME_NO = yyy insert into HISTORY set COIN = RATE * POINT 今は一つの保存に対して3つのSQL文を使わなければいけないのですが、 うまいことこの3つのSQL文を一つか二つにつなげるということは出来ないものでしょうか?

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

INSERT INTO `HISTORY` (`COIN`) SELECT `RATE`*`POINT` FROM `USER`,`GAME` WHERE `UNIQUE` = xxx AND `GAME_NO` = yyy という1文でいけると思います

mizutaki
質問者

お礼

ありがとうございます。 それをベースに作っていったらうまく出来ました。

その他の回答 (1)

  • dell_OK
  • ベストアンサー率13% (766/5720)
回答No.1

ほぼ、そのままを記述する感じです。 insert into HISTORY set COIN = (select RATE * POINT from USER, GAME where USER.UNIQUE =1 and GAME.GAME_NO =1) 抽出する項目が各テーブル1つずつなのと、 出力する項目も1つなので、これだけですが、 項目数が増えてくると、少々面倒になります。

mizutaki
質問者

お礼

確かに項目が増えるとそれだけとんでもなく巨大なソースコードになってしまいますね。 ありがとうございます