- ベストアンサー
アクセスのテーブル更新について
- アクセスのテーブルを更新する方法についての質問です。具体的な処理方法を教えてください。
- 質問者はアクセス初心者で、エクセルのVBAがある程度できるレベルだとのことです。
- 処理1では、テーブル1とテーブル2の内容が異なる場合、テーブル1にテーブル2の内容を書き込む方法を求めています。処理2では、テーブル1のフラグが9以外のレコードをテーブル3に追加し、追加したレコードをテーブル1から削除する方法を教えて欲しいとのことです。
- みんなの回答 (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の順番で実行します。
その他の回答 (2)
- o_chi_chi
- ベストアンサー率45% (131/287)
T1とT2を結びつけるキーはなんでしょう? >T1とT2の地域が異なった場合 T1に地域が入っていませんが? もしフラグがT2キーならT1に(T3にも) 地域フィールドをもつ必要はありません。
お礼
回答ありがとうございました。 T1地域は値Nullを想定しています。 実際に知りたいのはNullあるいはNull以外の、フラグで 繋げて見たT2の地域とは異なるデータが入っている場合です。 ですので条件に「T1とT2の地域が異なった場合」と記載しました。 「Nullだったら」という条件だけの動作では不十分であった為です。
- rqg2010
- ベストアンサー率66% (2/3)
お早うございます。 >処理1 >T1の地域とT2の地域の内容が異なった場合、T1の地域にT2の地域の内容を書き込む と、いうことですが、 T1の地域が記載されていません。 また、「異なった場合」ということですが、 何を基に?、どのキーを基に?異なったと判断するのかわかりません。
お礼
回答ありがとうございました。 いくつかの疑問点に関しましては、回答No2のお方に お礼させて頂いた内容と重なるものと思います。 何を基に?につきましては、フラグを基に、となります。
お礼
SQLに張り付けて、無事動作確認出来ました。 疑問な点に関しましては、実際に扱う情報は全く別物であり、 サンプルデータの条件を無理矢理作成した為に生じた物です。 確認したかった動作に関して、全て確認、理解出来ました。 本当にありがとうございました。