• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:アクセスのテーブル更新について)

アクセスのテーブル更新について

このQ&Aのポイント
  • アクセスのテーブルを更新する方法についての質問です。具体的な処理方法を教えてください。
  • 質問者はアクセス初心者で、エクセルのVBAがある程度できるレベルだとのことです。
  • 処理1では、テーブル1とテーブル2の内容が異なる場合、テーブル1にテーブル2の内容を書き込む方法を求めています。処理2では、テーブル1のフラグが9以外のレコードをテーブル3に追加し、追加したレコードをテーブル1から削除する方法を教えて欲しいとのことです。

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

  • ベストアンサー
  • don9don9
  • ベストアンサー率47% (299/624)
回答No.3

姓と名をキーにした場合、同姓同名の人がいたらどうするのか? ユニークキー(社員番号など)が必要ではないのか? 地域という項目の内容が、T2と一致しなければならないのであれば 最初からT1やT3に地域という項目を作らず、フラグだけにしておいて 必要な時にT2とJOINすればいいのでは? など、疑問な点もありますが、とりあえず以下でどうでしょうか。 クエリ1を UPDATE テーブル2 INNER JOIN テーブル1 ON テーブル2.フラグ = テーブル1.フラグ SET テーブル1.地域 = テーブル2.地域; クエリ2を INSERT INTO テーブル3 SELECT テーブル1.* FROM テーブル1 INNER JOIN テーブル2 ON (テーブル1.地域 = テーブル2.地域) AND (テーブル1.フラグ = テーブル2.フラグ) WHERE NOT EXISTS(SELECT * FROM テーブル3 WHERE テーブル3.姓=テーブル1.姓 AND テーブル3.名=テーブル1.名); クエリ3を DELETE * FROM テーブル1 WHERE EXISTS(SELECT * FROM テーブル3 WHERE テーブル3.姓=テーブル1.姓 AND テーブル3.名=テーブル1.名); として、これを1,2,3の順番で実行します。

kazu0056
質問者

お礼

SQLに張り付けて、無事動作確認出来ました。 疑問な点に関しましては、実際に扱う情報は全く別物であり、 サンプルデータの条件を無理矢理作成した為に生じた物です。 確認したかった動作に関して、全て確認、理解出来ました。 本当にありがとうございました。

その他の回答 (2)

  • o_chi_chi
  • ベストアンサー率45% (131/287)
回答No.2

T1とT2を結びつけるキーはなんでしょう? >T1とT2の地域が異なった場合 T1に地域が入っていませんが? もしフラグがT2キーならT1に(T3にも) 地域フィールドをもつ必要はありません。

kazu0056
質問者

お礼

回答ありがとうございました。 T1地域は値Nullを想定しています。 実際に知りたいのはNullあるいはNull以外の、フラグで 繋げて見たT2の地域とは異なるデータが入っている場合です。 ですので条件に「T1とT2の地域が異なった場合」と記載しました。 「Nullだったら」という条件だけの動作では不十分であった為です。

  • rqg2010
  • ベストアンサー率66% (2/3)
回答No.1

お早うございます。 >処理1 >T1の地域とT2の地域の内容が異なった場合、T1の地域にT2の地域の内容を書き込む と、いうことですが、 T1の地域が記載されていません。 また、「異なった場合」ということですが、 何を基に?、どのキーを基に?異なったと判断するのかわかりません。

kazu0056
質問者

お礼

回答ありがとうございました。 いくつかの疑問点に関しましては、回答No2のお方に お礼させて頂いた内容と重なるものと思います。 何を基に?につきましては、フラグを基に、となります。

関連するQ&A