テーブルおよびクエリを結合する
Applies ToAccess for Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Access クエリに複数のデータ ソースを含める場合は、結合を使用して、データ ソースの相互関係に基づいて、表示するレコードを制限します。 また、結合を使用して両方のデータ ソースのレコードを結合して、ソースのレコードの各ペアがクエリ結果の 1 つのレコードになるようにします。

この記事では、さまざまな種類の結合について説明し、それらをクエリで使用する方法について説明します。 既定では、クエリで使用する 2 つのデータ ソース間にリレーションシップが既にある場合、結合が自動的に作成されます。 結合は、相互に明確に対応するフィールドがある場合にも作成されます。 自動的に作成された結合を削除できます。 この記事では、テーブルリレーションシップの作成方法など、テーブルリレーションシップに関する基本的な情報を提供します。

注: テーブルを結合するのと同じ方法でクエリを結合できます。また、両方を結合することもできます。

この記事の内容

概要

データベースは、相互に論理的な関係を持つデータのテーブルのコレクションです。 リレーションシップを使用して、共通のフィールドでテーブルを接続します。 テーブルは任意の数のリレーションシップの一部にすることができますが、各リレーションシップには常に 2 つのテーブルが存在します。 クエリでは、リレーションシップは結合によって表されます。

クエリにテーブルを追加すると、 Access テーブル間で定義されているリレーションシップに基づいて結合が作成されます。 既に定義されているリレーションシップを表していない場合でも、クエリで結合を手動で作成できます。 クエリのデータ ソースとして (テーブルの代わりに、またはテーブルに加えて) 他のクエリを使用する場合は、ソース クエリ間、およびそれらのクエリとデータ ソースとして使用するすべてのテーブルの間に結合を作成できます。

結合は、クエリ操作に含めるためにデータが一致する必要があるルールを確立するという点で、クエリ条件と同様に動作します。 条件とは異なり、結合では、結合条件を満たす行の各ペアをレコードセットで結合して 1 つの行を形成することも指定します。

結合には、内部結合、外部結合、クロス結合、不等結合の 4 つの基本的な種類があります。 この記事では、使用できる各種類の結合、各種類を使用する理由、結合の作成方法について説明します。

結合とは、テーブルに対するリレーションシップをクエリすることです。これは、共通のデータ値に基づいて 2 つのソース内のデータを結合する方法を示します。 ダイアログ ボックスで結合のプロパティを開いた、クエリ デザイン ビューでの結合の図を次に示します。

[結合プロパティ] ダイアログ ボックス

テーブル間のこの行は、結合を表します。 結合をダブルクリックして [結合のプロパティ] ダイアログ ボックス (図) を開き、結合を確認または変更します。

結合は方向的な場合があります。 ダイアログ ボックスのこの領域には、結合内のテーブルと、テーブルの結合に使用されるフィールドが表示されます。

この領域は結合の種類を決定します。オプション 1 は内部結合、2 は左外部結合、3 は右外部結合です。

両方のテーブルのフィールドを使用でき、特定のタスクに関連するデータが各テーブルから表示されます。 内部結合には、他のデータは含まれません。 外部結合では、1 つのテーブルの関連のないレコードもクエリ結果に含まれます。

ページの先頭へ

結合の種類

結合には、内部結合、外部結合、クロス結合、不等結合の 4 つの基本的な種類があります。 クロス結合と不等結合は高度な結合の種類であり、ほとんど使用しませんが、結合のしくみを完全に理解するには、それらについて理解しておく必要があります。

内部結合: 両方のテーブルの関連データのみが結合されます

内部結合は、関連するテーブルに対応するデータがある場合はテーブルからのデータのみを含み、その逆の場合は Access に含まれる結合です。 ほとんどの場合、内部結合を使用します。 結合を作成し、結合の種類を指定しない場合、Access では内部結合が必要であると想定されます。 内部結合は、共有値に基づいて 2 つのソースのデータを結合できるため、完全な画像がある場合にのみデータが表示されるため、便利です。

外部結合: 関連するすべてのデータが正しく結合され、1 つのテーブルから残りのすべてのレコードが結合されます

外部結合は内部結合に似ていますが、テーブルの 1 つから残りの行を追加します。 外部結合は方向です。左外部結合には、左テーブルのすべてのレコード (結合の最初のテーブル) が含まれており、右外部結合には右のテーブルのすべてのレコード (結合の 2 番目のテーブル) が含まれます。

完全外部結合: 可能な場合に組み合わされたすべてのデータ

一部のシステムでは、外部結合には両方のテーブルのすべての行を含め、対応する行が結合されます。 これは完全外部結合と呼ばれ、Access では明示的にサポートされていません。 ただし、クロス結合と条件を使用して同じ効果を得ることができます。

クロス結合: すべてのデータが可能なすべての方法で結合されます

ほとんどの場合、クロス結合は、クエリに 2 つのテーブルを追加してから結合を忘れることの副作用です。 Access では、1 つのテーブルのすべてのレコードを他のテーブルのすべてのレコードと組み合わせて表示し、可能なすべてのレコードの組み合わせを確認することを意味します。 データを組み合わせられないため、この種の結合によって有用な結果が生成されることはほとんどありません。 しかし、クロス結合が必要なだけの場合がいくつかあります。

不等結合: 通常の結合と同様ですが、別の比較を使用して行を結合する

不等号結合では、等号 (=) 以外の演算子を使用して値を比較し、データを結合するかどうかを判断します。 不等結合は明示的にサポートされていませんが、クロス結合と条件を使用して同じ効果を得ることができます。

結合された両方のテーブルに共通の値が存在する行を表示する

結合されたフィールドに一致する値を持つ行のみを表示する場合は、内部結合を使用します。 Access では、内部結合が自動的に作成されます。

内部結合は最も一般的な種類の結合です。 結合されたテーブルの 1 つの行が、結合されたフィールド内のデータに基づいて、もう一方のテーブルの行に対応することをクエリに伝えます。 内部結合を持つクエリを実行すると、結合された両方のテーブルに共通の値が存在する行のみがクエリ操作に含まれます。

操作方法内部結合を使用しますか?

ほとんどの場合、内部結合を使用するために何もする必要はありません。 クエリに追加するテーブルに既にリレーションシップがある場合、テーブルを追加すると、関連テーブルの各ペア間に内部結合が自動的に作成されます。 また、参照整合性が適用されている場合、一対多リレーションシップの "一" 側のテーブルを示す "1" と "多" 側のテーブルを示す無限記号 () が結合線の上に表示されます。

リレーションシップを作成していない場合でも、クエリに 2 つのテーブルを追加し、それらのテーブルにそれぞれ同じデータ型または互換性のあるデータ型のフィールドがあり、結合フィールドの 1 つが 主キーである場合、Access によって内部結合が自動的に作成されます。 参照整合性が強制されないため、この場合、"one" と "many" のシンボルは表示されません。

クエリをクエリに追加し、それらのクエリ間にリレーションシップを作成していない場合、Access では、それらのクエリ間、またはクエリとテーブルの間に内部結合が自動的に作成されることはありません。 一般に、自分で作成する必要があります。 内部結合を作成するには、あるデータ ソースから別のデータ ソースのフィールドにフィールドをドラッグします。 2 つのフィールド間に線が引かれ、結合が作成されたことが示されます。

内部結合の SQL 構文

次に示すように、内部結合は FROM 句の SQL で指定されます。

FROM table1 INNER JOIN table2 ON table1.field1 比較 table2field2

INNER JOIN 操作には、次の指定項目があります。

引数

説明

table1table2

結合するレコードのあるテーブルの名前。

field1field2

結合されるフィールドの名前。 数値でない場合、フィールドは同じ データ型 で、同じ種類のデータが含まれている必要がありますが、同じ名前を持つ必要はありません。

compare

"="、"<"、">"、"<="、">="、"<>" などのリレーショナル比較演算子。

内部結合構文の詳細については、 トピック「INNER JOIN 操作」を参照してください。

ページの先頭へ

1 つのテーブルのすべての行と、もう一方のテーブルの対応する行を表示する

外部結合では、結合の両側の行の一部は正確に対応しますが、クエリには 1 つのテーブルのすべての行と、結合の両側で共通の値を共有する他のテーブルの行も含める必要があることをクエリに示します。

外部結合は、左外部結合でも、右外部結合でもかまいません。 左外部結合では、クエリには、SQL ステートメント FROM 句の最初のテーブルのすべての行と、結合フィールドに両方のテーブルに共通する値が含まれる他のテーブルの行のみが含まれます。 右外部結合では、クエリには、SQL ステートメント FROM 句の 2 番目のテーブルのすべての行と、結合フィールドに両方のテーブルに共通する値が含まれる他のテーブルの行のみが含まれます。

注: 結合をダブルクリックし、[結合の プロパティ ] ダイアログ ボックスを表示すると、特定の結合内の左のテーブルまたは右のテーブルを簡単に確認できます。 SQL ビューに切り替えて、FROM 句を調べることもできます。

外部結合の一方の行には、他のテーブルの対応する行がないため、その他のテーブルからクエリ結果に返されるフィールドの一部は、行が対応していない場合は空になります。

外部結合操作方法使用しますか?

既存の内部結合を変更して、外部結合を作成します。 内部結合が存在しない場合は、内部結合を作成し、外部結合に変更します。

内部結合を外部結合に変更する

  1. クエリ デザイン ビューで、変更する結合をダブルクリックします。

    [結合プロパティ] ダイアログ ボックスが表示されます。

  2. [ 結合プロパティ ] ダイアログ ボックスで、オプション 2 とオプション 3 の横にある選択肢をメモします。

  3. 使用するオプションをクリックし、[OK] をクリックします。

  4. Access には結合が表示され、結合条件を満たす行のみが含まれるデータ ソースにすべての行が含まれるデータ ソースを指す矢印が表示されます。

あいまいな外部結合

LEFT JOIN と INNER JOIN を含むクエリを作成した場合、最初に実行する結合操作を Access で判断できない場合があります。 左結合と内部結合のどちらを最初に実行するかによって結果が異なるため、Access によってエラー メッセージが表示されます。

このエラーを修正するには、最初に実行する結合が明確になるようにクエリを変更する必要があります。

外部結合の SQL 構文

外部結合は、次に示すように、FROM 句の SQL で指定されます。

FROM table1 [ LEFT |RIGHT ] JOIN table2ON table1.field1 compare table2.field2

LEFT JOIN 操作と RIGHT JOIN 操作には、次の指定項目があります。

引数

説明

table1table2

結合するレコードのあるテーブルの名前。

field1field2

結合されるフィールドの名前。 フィールドは同じ データ型 で、同じ種類のデータが含まれている必要がありますが、同じ名前を持つ必要はありません。

compare

"="、"<"、">"、"<="、">="、"<>" などのリレーショナル比較演算子。

外部結合構文の詳細については、 LEFT JOIN、RIGHT JOIN 操作に関するトピックを参照してください。

ページの先頭へ

両方のテーブルのすべての行を表示し、共通の値が存在する場所で結合します

2 つのテーブルのすべての行を表示し、共通の値に基づいて結合する場合は、完全外部結合を使用します。 Access では完全外部結合は明示的にサポートされていませんが、共用体クエリを使用して同じ効果を得ることができます。 次の手順ではこれを行う方法について説明しますが、共用体クエリの詳細については、「関連項目 セクションを参照してください。

共用体クエリを使用して完全外部結合を実行するには:

  1. 完全外部結合に使用するフィールドに左外部結合を含むクエリを作成します。

  2. [ホーム] タブの [表示] グループで [表示] をクリックし、[SQL ビュー] をクリックします。

  3. CTRL + C キーを押して SQL コードをコピーします。

  4. FROM 句の末尾にあるセミコロンを削除し、Enter キーを押します。

  5. UNION」と入力し、Enter キーを押します。

    注: 共用体クエリを使用して完全外部結合を実行する場合は、ALL キーワード (keyword)を使用しないでください。

  6. Ctrl キーを押しながら V キーを押して、手順 3 でコピーした SQL コードを貼り付けます。

  7. 貼り付けたコードで、 LEFT JOINRIGHT JOIN に変更します。

  8. 2 番目の FROM 句の末尾にあるセミコロンを削除し、Enter キーを押します。

  9. FROM 句 (左側のテーブル) にリストされている最初のテーブルの結合フィールドの値が NULL であることを指定する WHERE 句を追加します。

    たとえば、FROM 句が次の場合です。

    FROM Products RIGHT JOIN [Order Details]  ON Products.ID = [Order Details].[Product ID]

    次の WHERE 句を追加します。

    WHERE Products.ID IS NULL

  10. 和集合クエリの末尾を示すために、WHERE 句の末尾にセミコロン (;)) を入力します。

  11. [デザイン] タブの [結果] グループで、[実行] をクリックします。

クロス結合

クロス結合は、 Accessで明示的に表されないという点で、内部結合と外部結合とは異なります。 クロス結合では、1 つのテーブルの各行が別のテーブルの各行と組み合わされ、クロス積またはデカルト積と呼ばれる結果になります。 明示的に結合されていないテーブルを含むクエリを実行するたびに、クロス積が結果になります。 クロス結合は通常意図しませんが、役に立つ場合があります。

クロス結合を使用する理由

2 つのテーブルまたはクエリ間で可能なすべての行の組み合わせを調べる場合は、クロス結合を使用します。 たとえば、あなたのビジネスが壮大な年を過ごし、顧客にリベートを与えることを検討しているとします。 各顧客の購入を合計するクエリを作成し、いくつかの可能なリベート率を持つ小さなテーブルを作成し、クロス結合を実行する別のクエリで 2 つを組み合わせることができます。 最終的に、顧客ごとに一連の架空のリベートを表示するクエリが作成されます。

クロス結合操作方法使用しますか?

クロス結合は、クエリにテーブルまたはクエリを含めるたびに生成され、テーブルまたはクエリごとに少なくとも 1 つの明示的な結合を作成しません。 Access は、他のテーブルまたはクエリに明示的に結合されていない各テーブルまたはクエリのすべての行を、結果内の他のすべての行に結合します。 前の段落のリベート シナリオを検討してください。 91 人の顧客があり、5 つの可能なリベート率を見たいとします。 クロス結合では、455 行 (91 行と 5 行の積) が生成されます。

ご想像のとおり、意図しないクロス結合によって、クエリ結果に膨大な数の行が作成される可能性があります。 さらに、実際にすべての行を他のすべての行と組み合わせるつもりがない場合、結果に表示される結合された行のほとんどは意味がないため、これらの結果は一般的に意味がありません。 最後に、意図しないクロス結合を使用するクエリの実行には非常に長い時間がかかる場合があります。

クエリのデザイン ビューでの意図しないクロス結合

1. 円で囲まれたフィールドは相互に結合する必要があります。

意図しないクロス積

1. レコードの数が非常に多いことに注意してください。

訂正したクエリ結果

1. レコードの数がはるかに少ない点に注意してください。

ページの先頭へ

フィールド値の不等値に基づくテーブルの結合

結合は、結合されたフィールドの 等価性 に基づいている必要はありません。 結合は、より大きい (>)、より小さい (<)、または等しくない (<>) などの任意の比較演算子に基づいて指定できます。 等価性に基づいていない結合は、不等結合と呼ばれます。

等しくないフィールド値に基づいて 2 つのデータ ソースの行を結合する場合は、等しくない結合を使用します。 通常、等しくない結合は、より大きい (>)、より小さい (<)、より大きいか等しい (>=)、または (<=) 以下の比較演算子に基づいています。 に基づく等しくない結合 (<>) 演算子は、クロス結合と同じ数の行を返す可能性があり、結果の解釈が困難になる可能性があります。

等しくない結合を使用操作方法?

Unequal 結合は、デザイン ビューではサポートされていません。 それらを使用する場合は、SQL ビューを使用して使用する必要があります。 ただし、デザイン ビューで結合を作成し、SQL ビューに切り替え、等号 (=) 比較演算子を見つけて、使用する演算子に変更することができます。 これを行った後は、SQL ビューで比較演算子を equals (=) に最初に変更した場合にのみ、デザイン ビューでクエリを再度開くことができます。

結合を削除する

Access で不要な結合が自動的に作成される場合、または誤って結合を作成した場合 (たとえば、異なるデータ型を持つ 2 つのフィールド間の結合) 場合は、結合を削除できます。

  1. クエリ デザイン グリッドで、削除する結合をクリックします。

  2. DELETE キーを押します

-または-

  • クエリ デザイン グリッドで、削除する結合を右クリックし、[削除] をクリック します

ページの先頭へ

追加クエリを使用してテーブルにレコードを追加

共用体クエリを使用して複数の選択クエリの結果を結合

する 複数のテーブルに基づくクエリ

作成する リレーションシップの作成、編集、または削除

ヘルプを表示

その他のオプションが必要ですか?

サブスクリプションの特典の参照、トレーニング コースの閲覧、デバイスのセキュリティ保護方法などについて説明します。

コミュニティは、質問をしたり質問の答えを得たり、フィードバックを提供したり、豊富な知識を持つ専門家の意見を聞いたりするのに役立ちます。