クエリで複数のテーブルを結合(内部結合、左外部結合、右外部結合)する : Access

リレーションシップと同様にクエリでも複数のテーブルを結合し抽出させることができます。

BackHomeへ BackAccessクエリへ


結合方法も同じく「内部結合」「左外部結合」「右外部結合」があります。

クエリとリレーションシップの結合の違いは、クエリはその場のみでリレーションシップは元からの設定です。

例えばクエリで結合していても、テーブルに戻ると整合性がなくなってもレコードを削除できます。

リレーションシップで参照整合の設定していると、整合性がなくなる場合はレコードを削除できません。

このようにリレーションシップの場合、データ変更などの自由度がなくなりますが、データを保護することができます。

以上からどちらを使用するかは決まりはありません。

プログラムでデータを保護する仕組みにすれば、クエリのみでもOKです。

このページではクエリで複数のテーブルを結合する3つの種類の実行例を掲載しています。

リレーションシップについては、「リレーションシップとは」 「リレーションシップの作成方法」などの記事を掲載しています。


請求書データベースを使用します。
2つのテーブルから構成されていて、一つは日付や宛先などの請求書書式の上の部分のデータです。
もう一つは、商品名や数量などの下の表のデータです。

「T_請求書」テーブルです。請求書書式の上の部分のデータです。

請求書データ

「T_請求書明細」テーブルです。請求書書式の下の表の部分のデータです。
「請求書ID」が共通フィールドになっています。
請求書ID:1 の 請求書番号:100に、「ぬいぐるみ」と「三輪車」が含まれています。

請求書明細データ

■ 内部結合

2つのテーブルの共通のフィールドを結びます。
「請求書ID」「請求書番号」「日付」「顧客名」「請求書明細ID」「請求書ID」「商品名」「数量」のフィールドを抽出しています。

内部結合リレーションシップ

内部結合の実行結果です。
「T_請求書」と「T_請求書明細」テーブルの共通のデータのみ表示されています。

内部結合の実行結果


■ 左外部結合

結合が矢印に変わりました。
片方のテーブル(矢印の元側)の全てのレコードと、そのレコードに共通するもう片方のレコードが抽出されます。

左外部結合リレーションシップ

「T_請求書」の全レコードと「T_請求書明細」に共通するデータのみが表示されています。

左外部結合の実行結果

■ 右外部結合

矢印が逆に変わりました。
左外部結合と同じですが、全てのレコードが抽出されるテーブルが逆になります。

右外部結合リレーションシップ

「T_請求書明細」の全レコードと「T_請求書」に共通するデータのみが表示されています。

右外部結合の実行結果



BackHomeへ BackAccessクエリへ

Copyright(C) FeedSoft