- ベストアンサー
ACCESSのクエリ(SQLビューについて)
こんにちはtmgmです。 ACCESSのクエリ(SQLビューについて)について質問です。"INSERT INTO TBL SELECT * FROM TBL1"というようなINSERT文をSQLビューに書き込んで実行することはできるんですが、これが複数行になるとどうしてもエラーが出てしまいます。ちなみに実行したい同じような文体のSQL文は100行近くあります。どうすればよいでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
ちょっと意味がわからないですが、つまり "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)
あ、TBL1,TBL2…が同じフィールド構成であるなら、 INSERT INTO TBL SELECT * FROM TBL1 UNION ALL SELECT * FROM TBL2 UNION ALL SELECT * FROM TBL3 : ってな書き方が出来るかも。 ACCESSで可能かどうかは未確認です。
- ARC
- ベストアンサー率46% (643/1383)
ん~、マクロを使うのはダメでしょうか? アクションを「SQLの実行」にして、1行に付きSQLを一つ書けば良いと思うのですが…
- coco1
- ベストアンサー率25% (323/1260)
ちょっとわかりにくいのですが、「複数行になると」というのは、何が複数行になると言うのでしょうか? 単に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 のように書かないといけません。 はずしていたらすみません。