演習
クエリでは、1 つのテーブルからはすべてのレコードを表示し、別のテーブルからは一致するレコードを表示したいという場合があります。 これを行うには、外部結合を作成します。
内部結合では、結合された両方のデータ ソース内に一致する ID が存在する場合にのみデータを表示します。 たとえば、製品と販売量を表示する場合は、"製品" テーブルと "受注明細" テーブルとの間に内部結合を作成します。 クエリを実行すると、注文が発生した製品のみ (すなわち、両方のテーブルに表示される製品) が返されます。
これに対し、外部結合では、1 つのデータ ソースからすべてのデータを返し、別のテーブルまたはデータ ソースから一部のデータを返します。
たとえば、まだ売れていない製品を表示するには、"製品" テーブルからは製品 ID を、"受注明細" テーブルからは一致する注文 IDを返すクエリを作成します。 "受注明細" テーブル内に一致するレコードがない製品は、"注文 ID" フィールドに値が含まれていない製品名を返します。
左外部結合と右外部結合
外部結合で、含まれているすべてのレコードを表示するテーブルは、ベース テーブルと呼ばれています。 一部のレコード (一致したレコード) のみを表示するテーブルは、セカンダリ テーブルと呼ばれています。
[結合プロパティ] ダイアログ ボックスには、各種の結合で表示される内容が記述されます。
顧客が購入した製品を表示するクエリを作成したと仮定します。 出力フィールドは、"製品名" フィールド、"注文 ID" フィールド、"数量" フィールドです。
-
内部結合。 両方のテーブルの結合されたフィールドが等しい行 (レコード) のみを含めます(たとえば、注文が関連付けられている製品のみ)。
-
左外部結合。 [左テーブル名] の下のテーブルのすべてのレコードと、結合されたフィールドが等しいテーブルのレコード (たとえば、すべての注文が含まれますが、製品が関連付けられている注文の数量と製品 ID のみ) のみを含めます。
-
右外部結合。 それらの製品に対する注文がない場合でも、"注文 ID" フィールドと "数量" フィールドには空白値が表示される)。
これらの例からわかるように、左側のテーブルと右側のテーブルを把握することが重要です。これは、実際にはクエリ ウィンドウでのテーブルの配置方法とは異なる場合があります。 クエリから取得するデータを理解するには、[結合プロパティ] ダイアログ ボックスでテキストをよく読んでください。
1. データ ソースを追加する
-
[作成]、[クエリ デザイン] の順に選択します。
必要なすべてのテーブルとクエリをデータ ソースとして追加します。 (心配しないでください。 忘れた場合でも、後でさらにデータ ソースを追加する機会があります)。
データ ソースが検出または推測されると、Access によって、データ ソースのリレーションシップが表示される場合があります。
2. 結合を追加する
-
ソース間のリレーションシップが表示されない場合は、結合を追加します。 一方のデータ ソース内にある目的のフィールドを、別のデータ ソース内の対応するフィールドまでドラッグします。 フィールドのドラッグ元のテーブルは、[結合プロパティ] ダイアログ ボックスで左側に表示されます。 既定では、Access は内部結合を作成します。 外部結合が必要な場合は、結合の種類を変更します。
3. 結合を変更する
-
変更対象の結合を表す線をダブルクリックします。
-
[結合プロパティ] ダイアログ ボックスで、外部結合を作成するために、2 番目または 3 番目のオプションを選択します。 [OK] を選択します。
どのテーブルがベース テーブルであるかご注意ください。そのテーブルからはすべてのレコードが表示されます。
4. クエリを実行する
クエリを作成するための一般的な手順に従い、出力フィールドを追加し、抽出条件を追加し、クエリを実行または保存します。 詳細については、「基本的なクエリの作成」をご覧ください。