いつもお世話になっております。
クエリについてお聞きします。
現在、2つのAccessDBが稼動しており、それを1つにまとめる作業をしています。
2つのDBには似通ったテーブルが存在し、それをマージする方法で悩んでいます。
テーブルA
・社員番号
・社員氏名
・フリガナ
・会社コード
・部署コード
テーブルB
・従業員コード
・従業員名カナ
・従業員名
・所属コード
フィールドの定義としましては、
社員番号=従業員コード
社員氏名=従業員名
フリガナ=従業員名カナ
部署コード=所属コード
となります。
全てテキストのレコードです。
これを、テーブルAを正にして、テーブルBのデータをAにマージしたいのです。
要件としましては、
1.テーブルAに存在する社員コードにマッチするレコードはそのまま残す(Bのデータは無視)
2.テーブルAに存在せず、Bに存在するものをAに追加する
ということです。
クエリを使って色々試しましたが、どうしてもテーブルAに存在するものもアップデートしてしまい、困っています。
どなたかご教授願えれば幸いです。
よろしくお願いいたします。
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許可(値要求=いいえ)にして、追加完了後元に戻しておく事。
早速の回答、ありがとうございました。
結果、うまく行きました。
差分を作って追加、という手順は、目からウロコでした。
初心者ですみません^^;
どうもありがとうございました。
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;
では、どうでしょうか。
ご回答ありがとうございました。
#1さんの方法でうまく行ってしまいましたが、30246kikuさんの方法も試してみようと思います。
どうもありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) AccessVBAで降順にするテーブル作成クエリを使用して作成したテーブルを削除し同一のテーブル作成 1 2023/01/06 11:17
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- 会社・職場 Excel、Googleスプレッドシートなどへのデータ入力 2 2023/07/06 05:59
- Access(アクセス) Accessの参照フィールドの列がずれてしまいます 1 2023/07/19 15:00
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- SQL Server ACCESSで表が作りたく、そのためのSQL文や設定方法を教えてください。 1 2022/08/15 12:28
- Excel(エクセル) エクセルで沢山のレコードの最後に追記するには? 7 2023/04/10 13:27
- Visual Basic(VBA) Changeイベントで複数セルへの貼り付けおよび値削除時に1個目のセルのみエラーになる 3 2022/12/21 09:07
- Access(アクセス) AccessVBAで任意の複数リンクテーブルをAccessVBAを動かす際に削除したいと考えておりま 1 2022/11/17 15:45
- 人事・法務・広報 就業規則・36協定の届について 1 2023/02/07 14:32
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「マスタ」と「テーブル」の違...
-
続.ORACLEのSELECTのソートに...
-
行方向のデータを横に並べる
-
SQLの書き方(UPDATE文)
-
2つのテーブルから条件に一致...
-
Access VBA 読み取り専用かチェ...
-
Access のリレーションシップで...
-
エクセルでテーブルの最終行が...
-
重複データを除いてインポート
-
シャープレジスター エラーコード
-
不動産検索サイトのような複数...
-
Access 1レコードずつcsvで出力...
-
MAX値を条件にデータを取得する...
-
symfowareのSQL文in句をバッチ...
-
ホームページがGOOGLEにインデ...
-
PhpMyAdminで作成して実行せよ...
-
アクセス 日付抽出(年月のみ)...
-
SELECT時の行ロックの必要性に...
-
ユニオンクエリで繋げられるテ...
-
SQL Server 2000 - bulk insert
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「マスタ」と「テーブル」の違...
-
2つのテーブルから条件に一致...
-
重複するキーから一番古い年月...
-
ACCESS 一つのフィールドに複...
-
行方向のデータを横に並べる
-
商品コード番号を入力すると商...
-
PLSQLの識別子エラー
-
Inner join と Left joinの明...
-
片方だけ抽出する方法(SQL)
-
Accessユニオンクエリーで2つ...
-
SQL 2つのテーブルとSUBSTRING...
-
主キーの変更
-
Accessでフィールドを比較した...
-
続.ORACLEのSELECTのソートに...
-
SQL文について(片方のテーブル...
-
場合によって条件を変えるSQL
-
請求と入金のテーブルの作成の...
-
sqlのupdate文で質問です。 テ...
-
accessで移動平均する方法
-
[Oracle] UPDATE分の副問い合わ...
おすすめ情報