ACCESS 2つのテーブルを比較する方法
ACCESSで2つのテーブルに同じような値が入っている場合、その差分をチェックするシーンがあります。
この際、目視でのチェックは大変ですよね。
そこで、ACCESSのクエリの機能を使って、2つのテーブルを比較する方法をご紹介します。
こんにちは。
はこにわガジェット (@hakoniwagadget) です。
ACCESSを使った売上管理、顧客管理などのデータベース開発を行っています。
ACCESSは使いこなすために少しスキルが必要なものの、うまく活用すればExcelよりも業務の効率化が図れます。
この記事ではACCESSの基本的な使い方をご紹介していきます。
テーブルの差分の種類
2つのテーブルを比較する際、差分といっても以下の種類があります。
1.片方のテーブルにはあるが、もう一方のテーブルにはないレコードがある
2.両方のテーブルに共通するレコードがあるが、特定のフィールドの値が異なっている
このどちらの差分もACCESSでチェックが可能ですが、一つ重要なポイントがあります。
それは、2つのテーブルを比較する際のキーとなる値です。
主キーと言われますが、テーブル内では他のレコードと重複しない(ユニーク)な値でありつつ、2つのテーブルで共通の値である必要があります。
では、具体的な差分のチェック方法を見ていきましょう。
サンプルテーブル
今回は、以下のサンプルテーブルを準備しました。
TRN_売上サンプル
TRN_売上サンプル2
2つとも売上情報を入力するテーブルですが、よく見ると微妙に違いがあります。
今回はこの2つのテーブルの差分をチェックしていきます。
レコード単位での差分をチェックする
まずはレコード単位での差分をチェックしましょう。
ACCESSの不一致クエリを使用します。
メニューから「作成」→「クエリウィザード」を起動します。
クエリの種類を聞かれますので、不一致クエリウィザードを選択します。
レコードを抽出するもととなるテーブルを選択します。
今回はTRN_売上サンプルテーブルを選択します。
次に比較に使用するテーブルを選択します。
今回はTRN_売上サンプル2です。
2つのテーブルに共通する値を選択します。
ここでは先ほど説明した主キーを選択します。
このフィールドを利用して、一致/不一致の判定が行われます。
今回は売上IDが主キーなので選択し、中央の矢印のボタンを押します。
下段の「関連付けるフィールド」に売上IDが記載されたのが分かります。
クエリの結果に表示するフィールドを聞かれますので、残りのフィールドをすべて選択して右側のボックスに移動します。
名前を付けて完了です。
クエリの結果を見ると、以下になります。
この方法で、TRN_売上サンプルにあって、TRN_売上サンプル2にないレコードのみを抽出することができます。
逆に、TRN_売上サンプル2にあってTRN_売上にないレコードを抽出したいときは、もう一つクエリを作り、テーブルを選択する順番を逆にして、先にTRN_売上サンプル2、次にTRN_売上サンプルを選択すれば作成できます。
フィールド単位での差分をチェックする
次に、両方のテーブルに共通するレコードで、フィールド(列)の値の差分をチェックする方法です。
先ほどと同じサンプルテーブルを使いますが、今回作成するクエリは不一致クエリではありません。
まずはクエリデザインからクエリを作成します。
テーブルの追加から「TRN_売上サンプル」と「TRN_売上サンプル2」を追加し、両方の共通の主キーである「売上ID」をドラッグアンドドロップでリレーション設定します。
2つのフィールドの間に線が引かれているのがリレーション設定された証です。
まずは顧客名を比較してみましょう。
下段のデザイングリッドにTRN_売上サンプルの顧客名とTRN_売上サンプル2の顧客名をドラッグします。
これだとどちらも「顧客名」フィールドでわかりにくいので、以下のように記載を変更します。
フィールド欄で「顧客名」の左にそれぞれ、顧客名1:、顧客名2:と記載しました。
クエリのフィールド行では、このように「:」を付けるとその左側はフィールド名として認識してくれます。
では、データシートビューで結果を見てみましょう。
このように、2つのテーブルで売上IDが共通するレコードの顧客名を並べて表示することができました。
これで差分をチェックすることができます。
ただ、全件目視でチェックするのはちょっと大変ですよね。そこでもう少し自動化してみましょう。
再度クエリのデザインビューに戻り、以下のフィールドを追加します。
判定: IIf([顧客名1]=[顧客名2],”〇”,”×”)
IIf関数を使って、顧客名1と顧客名2が同一の場合は〇、違う場合は×を表示するようにしました。
では、データシートビューで結果を見てみましょう。
このように、簡単に違いが分かるようになりました。
ちなみに、顧客名以外のフィールドも比べたい場合は下記のように横に比較するフィールドをつなげていけば複数のフィールドをチェックできます。
以上、2つのテーブルを比較する方法をご紹介しました。
ACCESSを使いこなせば、業務の効率化や自動化が実現できます。
しかし、自分でACCESSを学ぶには時間がない、難しそうで不安、という方も多いでしょう。
そんな時は、ACCESS開発歴20年以上、過去に100以上のACCESSデータベースを開発してきた私(@hakoniwagadget)にお任せください。
ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。
最後までお読みいただき、ありがとうございました。