ACCESS 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の操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。
最後までお読みいただき、ありがとうございました。