• ベストアンサー

構造が同じ別テーブルInsert Into する場合

追加クエリをVBA上のSQLで作成しています。 A.MDBとB.MDBに同名のTable_Aがあり、フィールドも同じです。。 これを重複をチェックするためにField_Aでジョインさせていますが、 テーブル名もフィールド名も同じなために区別ができません。 どのようにして区別するとよいのでしょうか?

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

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

#1です。リンクを張って INSERT INTO Table_A1 SELECT Table_A.* FROM Table_A LEFT JOIN Table_A1 ON [Table_A].[ID]=[Table_A1].[ID] WHERE ((([Table_A1].[ID]) Is Null)); みたいなSQL文でいかがでしょう

noname#27115
質問者

お礼

リンクテーブルでいけました。 データの有無チェックはやっぱり、同MDBでないと 無理なんでしょうねぇ。。(リンクにしない場合) リンクしなくてもJoinって可能なんでしょうか?

その他の回答 (2)

noname#182251
noname#182251
回答No.3

>リンクしなくてもJoinって可能なんでしょうか? ちょっと考えて下さい。リンクしないでJoinすることを要求されたら、データベース(エンジン)はどこを探しに行けば良いでしょうか? いくつものデータベースに同じ名前のテーブルがあったり、ネットワークが広範囲に拡がっていたり。全部丸なげでデータベースに面倒を見てくれってのは無理です。

noname#27115
質問者

補足

アクションクエリで外部DBに書き出す場合、IN句を 使いますが、そんなのができないかなぁ。と思った 次第です。 今回はリンクでいけたので助かりました。 ありがとうございました。

noname#182251
noname#182251
回答No.1

質問が明快でないため回答がないように見受けました。 VBAということなのでAccessの中での話でしょうか。 A.MDBからB.MDBのTable_Aにリンクを張れば、Accessは自動的に Table_A1 として名前を付け替え、SQL文は 例:SELECT DownLoadLog.TgtURLID, Table_A1.TgtURLID FROM DownLoadLog INNER JOIN Table_A1 ON DownLoadLog.LogID = Table_A1.LogID; のように、二つの名前で出来ると考えます。 問題点を具体的に、場合によってはソースを提示するなどして補足されてはいかがでしょう。

noname#27115
質問者

補足

VBA+MDBファイルということなのでAccessでもExcelでもWordでも何 でもかまいません。 Table_Aに伝票IDが存在したとして、A.MDBからB.MDBに伝票IDが 存在しないものだけをアクションクエリでExportできないかと思 います。 リンクテーブルにする方法はやっていなかったので試 してみたいとおもます。

関連するQ&A