ACCESS 2つのテーブルで一致するレコードを抽出する方法

2つのテーブルで一致するレコードを抽出する方法

ACCESSでは、複数のテーブルをリレーション設定して使っていきます。

複数のテーブルを連結する際に使用するのが主キーです。
複数のテーブルに同じフィールド(主キー)を持たせ、その値が同じものを連結していくのがリレーションデータベースの基本です。

ただ、運用していく中で2つのテーブルのデータに不整合が出てしまう可能性もあります。

そんな時に、2つのテーブルで一致するレコードを抽出する方法をご紹介します。


こんにちは。
はこにわガジェット (@hakoniwagadget) です。

ACCESSを使った売上管理、顧客管理などのデータベース開発を行っています。
ACCESSは使いこなすために少しスキルが必要なものの、うまく活用すればExcelよりも業務の効率化が図れます。
この記事ではACCESSの基本的な使い方をご紹介していきます。

サンプルデータ

まず、今回使用するサンプルデータを2つ準備しました。

1つ目は売上情報が記録されたtest_売上テーブルです。

そしてもう一つは、顧客情報が記載されたMST_顧客テーブルです。

この2つのテーブルは顧客IDでリレーション設定されています。

今回の目的は、このtest_売上に登録された顧客IDのうち、MST_顧客にあるものだけを抽出すること、とします。

この件数であれば目視で行ってもできるレベルです。
しかし、実際には運用を開始したACCESSのテーブルはレコード数が数百、数千となることが一般的です。

そうなると目視で確認するという作業は非現実的でしょう。

そこで便利なのが不一致クエリです。

不一致クエリの作成

不一致クエリとは、2つのテーブルで一致しないレコードだけを抽出するクエリです。

クエリウィザードから作成できます。

メニューから「作成」→「クエリウィザード」を選択しましょう。

クエリウィザード

クエリの種類を聞かれますので、不一致クエリウィザードを選択します。

レコードを抽出するテーブルかクエリを聞かれます。

今回はtest_売上テーブルを選択します。

次に、比較に使うテーブルまたはクエリを聞かれます。

今回はMST_顧客テーブルを選択します。

比較するための共通のフィールドを選択します。

今回は顧客IDを使用します。

両方のテーブルの顧客IDを選択して、中央の矢印ボタンを押します。

クエリに表示するフィールドを聞かれますので、残りのフィールドをすべて追加しておきましょう。

これで不一致クエリが完成です。

名前を付けてクエリを実行してみましょう。

すると、下記のように、不一致のレコードのみが表示されます。

しかし、もともと出したかったのは不一致ではなく一致するレコードですよね。

そこで、このクエリをデザインビューで開きます。

クエリのデザインビュー

すると、こんな画面が表示されます。

下段のデザイングリッドで、顧客IDの抽出条件に、「Is Null」と設定されています。

これは、2つのテーブルを比較する条件に設定した顧客IDがNull、つまり、片方に存在しないレコードだけを抽出する、という設定なのです。

そこで、逆に一致するレコードだけにするためにこの設定を変更します。

ここをIs Not Nullに変更すればOKです。

結果をデータシートビューで見てみましょう。

このように、2つのテーブルで一致するレコードのみが抽出できました。

以上、2つのテーブルで一致するレコードを抽出する方法をご紹介しました。


ACCESSを使いこなせば、業務の効率化や自動化が実現できます。
しかし、自分でACCESSを学ぶには時間がない、難しそうで不安、という方も多いでしょう。

そんな時は、ACCESS開発歴20年以上、過去に100以上のACCESSデータベースを開発してきた私(@hakoniwagadget)にお任せください。

ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。

サービス一覧

最後までお読みいただき、ありがとうございました。