アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんにちはtmgmです。

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

A 回答 (4件)

ちょっと意味がわからないですが、つまり


"INSERT INTO TBL SELECT * FROM TBL1"
"INSERT INTO TBL2 SELECT * FROM TBL3"
という風にかかれたわけですか?
それなら、勘違いです。そのような書き方は出来ません。クエリでは1対1の関係でしか記述できません。複数テーブルを幾ら使用したとしても、入力と出力の関係は1対1です。ご質問の形態では、複数のテーブルに複数のテーブルのコピーをされてます。一つのクエリではできません。

どうしてもおやりになりたいのでしたら、クエリを100個分用意し、そのクエリをマクロで順々に実行させることです。もしくはVBAでSQL文を発行して実行する方法もあります。

どちらにせよクエリが1つで複数のテーブルのコピーは不可能です。
    • good
    • 0

あ、TBL1,TBL2…が同じフィールド構成であるなら、


INSERT INTO TBL
SELECT * FROM TBL1
UNION ALL SELECT * FROM TBL2
UNION ALL SELECT * FROM TBL3
:

ってな書き方が出来るかも。
ACCESSで可能かどうかは未確認です。
    • good
    • 0

ん~、マクロを使うのはダメでしょうか?



アクションを「SQLの実行」にして、1行に付きSQLを一つ書けば良いと思うのですが…
    • good
    • 0

ちょっとわかりにくいのですが、「複数行になると」というのは、何が複数行になると言うのでしょうか?



単に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

のように書かないといけません。

はずしていたらすみません。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!