• ベストアンサー

ACCESSのクエリ(SQLビューについて)

こんにちはtmgmです。 ACCESSのクエリ(SQLビューについて)について質問です。"INSERT INTO TBL SELECT * FROM TBL1"というようなINSERT文をSQLビューに書き込んで実行することはできるんですが、これが複数行になるとどうしてもエラーが出てしまいます。ちなみに実行したい同じような文体のSQL文は100行近くあります。どうすればよいでしょうか?

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

  • ベストアンサー
  • PAPA0427
  • ベストアンサー率22% (559/2488)
回答No.1

ちょっと意味がわからないですが、つまり "INSERT INTO TBL SELECT * FROM TBL1" "INSERT INTO TBL2 SELECT * FROM TBL3" という風にかかれたわけですか? それなら、勘違いです。そのような書き方は出来ません。クエリでは1対1の関係でしか記述できません。複数テーブルを幾ら使用したとしても、入力と出力の関係は1対1です。ご質問の形態では、複数のテーブルに複数のテーブルのコピーをされてます。一つのクエリではできません。 どうしてもおやりになりたいのでしたら、クエリを100個分用意し、そのクエリをマクロで順々に実行させることです。もしくはVBAでSQL文を発行して実行する方法もあります。 どちらにせよクエリが1つで複数のテーブルのコピーは不可能です。

その他の回答 (3)

  • ARC
  • ベストアンサー率46% (643/1383)
回答No.4

あ、TBL1,TBL2…が同じフィールド構成であるなら、 INSERT INTO TBL SELECT * FROM TBL1 UNION ALL SELECT * FROM TBL2 UNION ALL SELECT * FROM TBL3 : ってな書き方が出来るかも。 ACCESSで可能かどうかは未確認です。

  • ARC
  • ベストアンサー率46% (643/1383)
回答No.3

ん~、マクロを使うのはダメでしょうか? アクションを「SQLの実行」にして、1行に付きSQLを一つ書けば良いと思うのですが…

  • coco1
  • ベストアンサー率25% (323/1260)
回答No.2

ちょっとわかりにくいのですが、「複数行になると」というのは、何が複数行になると言うのでしょうか? 単にTBL1に対してselect文を投げた結果をTBLに登録したいと言うことではないのでしょうか? その場合は、TBL1とTBLのフィールドが全く同じでないと、例文ではエラーになります。 もしも両者のフィールド構成が違う場合、例えば、 TBL:(id, name, age, sex, bd) TBL1:(id, name, bd, age) のような場合には、 insert into tbl(name, age, bd) select name, age, bd from tbl1 のように書かないといけません。 はずしていたらすみません。

関連するQ&A