ACCESS クエリでのテーブルの結合方法

クエリでのテーブルの結合方法

ACCESSは複数のテーブルを組み合わせて作り上げる、リレーショナルデータベースです。
そのテーブルの結合をGUIで簡単に操作できる機能がクエリです。

クエリでは、テーブルを結合する際に様々な結合方法を選択できます。

今回は、クエリでのテーブルの結合方法をご紹介します。


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

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

クエリでのテーブルの結合とは

ACCESSで複数のテーブルを組み合わせてクエリを作成する場合、以下のようにクエリのデザインビューでテーブルを結合します。

今回は、売上テーブル、顧客テーブル、商品テーブルがありますが、売上テーブルと他の2つのテーブルが線でつながれていますね。
これがテーブルの結合です。

今回は、この設定方法をご紹介します。

サンプルテーブル

では、実際にテーブルの結合方法を見ていきましょう。
今回はこちらの3つのテーブルを用意しました。

顧客テーブル

商品テーブル

売上テーブル

売上テーブルに顧客ID、商品IDがありますが、これはそれぞれ顧客テーブルの顧客ID、商品テーブルの商品IDを指しています。
これが同じものだよ、とわかるように設定するのがテーブルの結合です。

クエリデザイン

では、この3つのテーブルをクエリでつないでいきます。
クエリデザインから、デザインビューでクエリを作成します。

クエリデザイン

空のクエリができますので、テーブルの追加を行います。

表示されるテーブルの一覧から、クエリの上段(フィールドリスト)に売上テーブル、顧客テーブル、商品テーブルを追加していきます。

この状態ではまだ、テーブル間の結合は設定されていません。

結合を行うために、各テーブルの結合フィールド、つまり同じ値が入っているフィールドの名前をドラッグアンドドロップでつないでいきます。
売上テーブルの顧客IDと顧客テーブルの顧客ID、売上テーブルの商品IDと商品テーブルの商品IDですね。

設定を行うと画面はこのような形になります。

顧客テーブルや商品テーブル側に「1」、売上テーブル側に「∞」と記載がありますが、これは顧客テーブルが一側、売上テーブルが多側であることを示します。

一側とはその値が一度しか現れないテーブルです。
顧客テーブルや商品テーブルでは顧客ID、商品IDが主キーですので、同じ顧客IDは2つは無い、ということです。

上記のようになりました。
これでテーブル間の結合、リレーションシップ設定は完了です。

テーブルの結合の種類

基本はここまでで完了していますが、もう少し追加でご説明しましょう。
テーブルの結合方法には種類があります。

売上テーブルと顧客テーブルをつなぐ線をダブルクリックしてください。
すると、下記の画面が表示されます。

ここでは、結合の種類を3パターンから選択することになります。

両方のテーブルの結合フィールドが同じ行だけを含める

これが標準です。

売上テーブル、顧客テーブルの両方に同じ値が存在するレコードのみを表示し、片方には存在するがもう一方には存在しない値が入っているレコードは表示されなくなります。

例えば、売上テーブルには顧客ID:10と入力されているのに顧客テーブルには顧客ID:10がいない場合は売上テーブルのレコードも表示されない、ということです。

この結合方法を内部結合と呼びます。

顧客テーブルの全レコードと売上テーブルの同じ結合フィールドのレコードだけを含める

こちらは、売上テーブル側に無い顧客IDでも、顧客テーブル側にある全てのレコードを表示する場合に利用します。
今回は顧客テーブルが一側テーブルなので、あまりこの結合方法を選択するシーンは多くありません。

この結合方法を外部結合と呼びます。

売上テーブルの全レコードと顧客テーブルの同じ結合フィールドのレコードだけを含める

こちらは逆に、顧客テーブル側に無い顧客IDでも、売上テーブル側のレコードは全て表示する、という方法です。
こちらも外部結合です。

売上テーブルには顧客ID:10と入力されているのに顧客テーブルには顧客ID:10がいない場合でも、この結合方法を選択すれば売り気テーブルのレコードを表示することが可能です。

そんなのはデータ入力上の誤りじゃないか?と思われるかもしれません。
実際にはこの結合方法を使うのは、多側のテーブルで入力値がNULL(空白)の場合が圧倒的に多いです。

今回は売上テーブルに入力されるのは顧客IDなので考えにくいのですが、売上テーブルの中には、レコードによって入力されたりされなかったりするフィールドもあると思います。
こうしたフィールドを他のテーブルとリレーション設定すると、内部結合の場合だと売上が表示されなくなってしまうのです。
そのため、外部結合を使ってい売上テーブルのレコードは全て表示させるのです。

実際に、外部結合に変更するとリレーションシップ画面でも、片側だけが矢印に変更されるのが確認できます。

ここまでマスターすれば、クエリでのテーブルの結合方法はばっちりです。
テーブルの設計方法について詳しく知りたい方は、はこちらの記事もご覧ください。

ACCESSでテーブルを作成する方法

以上、クエリでのテーブルの結合方法をご紹介しました。


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

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

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

サービス一覧

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