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開発歴20年以上、過去に100以上のACCESSデータベースを開発してきた私(@hakoniwagadget)にお任せください。
ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。
最後までお読みいただき、ありがとうございました。