スポンサーリンク

【 Microsoft Access 】選択クエリ~応用編~二つのテーブルで一致するデータの抽出

クエリ
スポンサーリンク

選択クエリには、様々な使い方があります。

選択クエリの最も基本的な使い方は別の記事で紹介しています。

今回は、選択クエリのより複雑で応用的な使い方について紹介します。

ここまでさっと作れるようになったら、怖いものなしです。

Access における選択クエリとは?

応用編を閲覧されている読者の皆様には言わずもがなかもしれませんが、おさらいとして、選択クエリとは何かを記載します。

選択クエリとは、「 Access データベース内にあるテーブルのデータを、ある条件を基に抽出して表示するもの」と認識していただければ良いと思っています。

ここで肝となるのは、あくまで表示するためのクエリということです。

その他のクエリは実行した際に、何かしらのアクションを起こしますが、選択クエリは表示することしかできません

Access における選択クエリの使い方

それでは、選択クエリの応用的な使い方について紹介していきます。

紹介する内容としては、大きく分けて、一つのテーブルから抽出する場合と、二つ以上のテーブルから抽出する場合について紹介します。

本記事ではそのうち、二つのテーブルのデータから抽出する場合の応用的な使い方を紹介します。

一つのテーブルから抽出する場合の紹介については、こちらの記事にて紹介しています。

一致するデータの抽出

Access の選択クエリでは、二つのテーブルを利用して、フィールドの値が一致するデータを抽出することができます。

例えば、下表のように購入履歴のテーブルと商品のマスタが存在しているとします。

購入日購入品CD数量
2021/08/01A0011
2021/08/01A0032
2021/08/01B0011
2021/08/02A0021
購入履歴
商品CD商品名称
A001りんご
A002バナナ
A003みかん
B001キャベツ
商品マスタ

これらのテーブルから、購入履歴の中身(コードではなく商品の名称)を下表のように表示させるには、フィールドを連結させる、あるいは抽出条件を利用する二通りの手段があります。

購入日購入品CD購入品名称数量
2021/08/01A001りんご1
2021/08/01A003みかん2
2021/08/01B001キャベツ1
2021/08/02A002バナナ1
購入履歴(品名情報付与)

より複雑な条件(三つ以上のテーブルを利用など)で抽出したい場合も考えると、前者のフィールドを連携させる方法がお勧めです。

フィールドを連結させる場合

フィールドを連結させる場合、連結させたいフィールド名同士をドラッグ&ドロップで結合させることで完了します。

このクエリを実行する際、フィールドの型が一致していないと抽出に失敗するため、注意が必要です。

以下のようなエラーが出た場合、連結させているフィールド同士の型が異なっている場合があります。

テーブルのデザインビューから連結させたフィールドのデータ型がどうなっているのか、確認しましょう。

抽出条件を利用する場合

抽出条件を利用する場合、2つのテーブルを結合する必要はありません。

下図のように抽出条件の中に条件として利用したいフィールド名を指定してください。

クエリの抽出条件の中にフィールドを指定しないといけないため、指定の仕方に注意が必要です。

[テーブル名].[フィールド名]

の形式で指定するようにしてください。

[フィールド名]

の形式だけでも指定することはできますが、この指定が可能なのは両テーブルに同じフィールド名が存在していない場合に限ります。(暗黙で指定している状態です

同じフィールド名が存在する場合は以下のエラーが発生しますので、該当エラーが発生した場合は条件を見直しましょう。

3つ以上のテーブルから抽出するには?

テーブルを3つ以上使う場合は、クエリの中に3つ以上のテーブルを入れることで、フィールドの連結・抽出条件どちらでも対応することが可能です。

一致不一致に関係なくデータを表示させる

2つのテーブルを利用して、一致するデータだけではなく、片方にデータが存在していなくても全件表示させることが可能です。

データを利用する際、マスタに設定がないバーコードを読み取った場合、品名欄を空白にしておきたい場合があります。

通常の選択クエリでは両方のテーブルに存在しているデータしか表示されないので、マスタに設定されていない物については、そもそも一覧として表示されなくなります。

これを回避するために、外部結合という方法を利用することで、片方に存在していなくてもデータをすべて表示させることが可能です。

やり方の詳細は以下のページで紹介しています。

存在しないデータを抽出する

2つのテーブルを利用する場合、2つのテーブルのフィールド内のデータを比較して、片方に存在してもう片方に存在しないデータを抽出することが可能です。

ネットワーク・運用の都合で、同じテーブルを2か所に持つ場合、片方に存在していて片方に存在しないデータがあると問題になることがあります。

これをチェックする方法として、選択クエリの利用が有効です。

上記一致不一致の場合と同様に、フィールドを外部結合することで存在しないデータを抽出することが可能になります。

やり方の詳細は以下のページで紹介しています。

まとめ

今回は、選択クエリのより実践的な応用的な使い方を紹介しました。

特に2つ以上のテーブルからの一致データの抽出は結構使う機会が多いと思うので、使い方をマスターしてしまいましょう。

また、ここで紹介した方法を応用すると、更に追加クエリや更新クエリでも利用できます。

追加クエリや更新クエリの利用方法はまたいつか。

コメント

タイトルとURLをコピーしました