• ベストアンサー

Access2002 2つのテーブルのマージ方法

いつもお世話になっております。 クエリについてお聞きします。 現在、2つのAccessDBが稼動しており、それを1つにまとめる作業をしています。 2つのDBには似通ったテーブルが存在し、それをマージする方法で悩んでいます。 テーブルA ・社員番号 ・社員氏名 ・フリガナ ・会社コード ・部署コード テーブルB ・従業員コード ・従業員名カナ ・従業員名 ・所属コード フィールドの定義としましては、 社員番号=従業員コード 社員氏名=従業員名 フリガナ=従業員名カナ 部署コード=所属コード となります。 全てテキストのレコードです。 これを、テーブルAを正にして、テーブルBのデータをAにマージしたいのです。 要件としましては、 1.テーブルAに存在する社員コードにマッチするレコードはそのまま残す(Bのデータは無視) 2.テーブルAに存在せず、Bに存在するものをAに追加する ということです。 クエリを使って色々試しましたが、どうしてもテーブルAに存在するものもアップデートしてしまい、困っています。 どなたかご教授願えれば幸いです。 よろしくお願いいたします。

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

  • ベストアンサー
  • Anzu4699
  • ベストアンサー率59% (26/44)
回答No.1

>クエリを使って色々試しましたが、どうしてもテーブルAに存在するものも >アップデートしてしまい、困っています。 リンクテーブルに関しては説明は要らなさそうなので、 純粋にマージ手順を示しておきます。 (1)TABLE-BとTABLE-Aの不一致クエリーを作成 (参考例SQL Query名=Q_不一致) SELECT T_BBB.従業員コード, T_BBB.従業員名カナ, T_BBB.従業員名, T_BBB.所属コード FROM T_BBB LEFT JOIN T_AAA ON T_BBB.従業員コード = T_AAA.社員番号 WHERE T_AAA.社員番号 Is Null (2)(1)で作成した差分をTABLE-Aに追加するクエリーを作成 (参考例SQL) INSERT INTO T_AAA ( 社員番号, フリガナ, 社員氏名, 部署コード ) SELECT Q_不一致.従業員コード, Q_不一致.従業員名カナ, Q_不一致.従業員名, Q_不一致.所属コード FROM Q_不一致 注意点(1) TABLE-Aの項目で、Null禁止(値要求=はい)になっている項目がある場合 その項目に対し、カラ(Null)のデータをセットしようするとエラーになりますので その時は、一時的にNull許可(値要求=いいえ)にして、追加完了後元に戻しておく事。

camo-tech
質問者

お礼

早速の回答、ありがとうございました。 結果、うまく行きました。 差分を作って追加、という手順は、目からウロコでした。 初心者ですみません^^; どうもありがとうございました。

その他の回答 (1)

  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.2

テーブルAの名前を「TA」、テーブルBの名前を「TB」とした時、 UPDATE TA RIGHT JOIN TB ON TA.社員番号=TB.従業員コード SET TA.社員番号 = TB.従業員コード, TA.社員氏名 = TB.社員氏名, TA.フリガナ = TB.従業員名カナ, TA.部署コード = TB.所属コード WHERE TA.社員番号 Is Null; では、どうでしょうか。

camo-tech
質問者

お礼

ご回答ありがとうございました。 #1さんの方法でうまく行ってしまいましたが、30246kikuさんの方法も試してみようと思います。 どうもありがとうございました。

関連するQ&A