Accessでテーブルを結合してみた

Accessのクエリでテーブルを結合してみました。内部結合とか外部結合とか、データベースに詳しい人には簡単なのかもしれないのですが、慣れていないと忘れてしまいますのでメモっておきます。

試した環境は下記です。

  • Access 2016

目次

  1. 内部結合と外部結合とは
  2. 試してみた
    1. 内部結合
    2. 外部結合
  3. まとめ

内部結合と外部結合とは

内部結合 両方のテーブルの指定したフィールドの値が一致するものだけを取り出して結合する。

外部結合 両方のテーブルの指定したフィールドの値が一致するものと、結合元の一致しないものを取り出して、結合する。

試してみた

実際にAccessを使って試してみました。 元のデータはこれです。 image0

image1

この2つのテーブルを結合してみます。table_1の方の秀丸エディタとtable_2のAdobeの結合結果に注目です。

内部結合

「作成」メニューから「クエリ」の中の「クエリデザイン」を選択し、2つのテーブルを選んでクエリを作成します。

table_1のsourceをドラッグしてtable_2のIDにドロップすると、線が引かれます。

image2

データシートビューに切り替えたときに結合結果が表示されるように、table_1のitemとtable_2のtagをそれぞれドラッグして、下の方に表示される(投稿の例では表示されてませんが)表にドロップします。

線をダブルクリックすると、結合プロパティというダイアログボックスが開きます。

image3

「両方のテーブルの結合フィールドが同じ行だけを含める。」を選択して「OK」をクリックして、クエリをデータシートビューに切り替えると、このように表示されます。

image4

table_2の方に斉藤企画が入っていない秀丸エディタと、table_1の方にアプリが入っていないAdobeが、結合結果に表示されてませんね。

外部結合

結合プロパティを変えてみます。

「table_1の全レコードとtable_2の同じ結合フィールドのレコードだけを含める。」を選択してみます。

image5

そうすると、table_1の秀丸エディタが表示されます。

image6

「table_2の全レコードとtable_1の同じ結合フィールドのレコードだけを含める。」を選択してみます。

image7

そうすると、table_2のAdobeが表示されます。

image8

まとめ

どちらかのテーブルの全部のデータを結合結果に残すか残さないかで選択が変わるところが、要注意です。

公開日