テーブルおよびクエリを結合する

テーブルおよびクエリを結合する

重要:  この記事は機械翻訳されています。機械翻訳についての「免責事項」をお読みください。この記事の英語版を参照するには、ここをクリックしてください。

Access クエリで複数のデータ ソースが含まれる場合は、データ ソースが相互に関連する方法に基づく] が表示するレコードを制限するのに結合を使用します。使用することも結合両方のデータ ソースからのレコードを結合するのにクエリの結果にレコードを 1 つのソースからのレコードのペアごとになるようにします。

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

注: クエリにテーブルを結合して両方を結合することも、同じ方法で参加できます。

この記事の内容

概要

結合されたテーブルの両方で同じ値が存在する行を表示します。

1 つのテーブルのすべての行と、他のテーブルの対応する行を表示します。

両方のテーブルのすべての行を表示して、一般的な値が入っている結合

クロス結合

等しくないフィールド値に基づいてテーブルを結合します。

結合を削除します。

概要

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

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

結合は、クエリ操作の対象となるデータが満たす規則を確立するという意味では、クエリの抽出条件と同様です。ただし、結合の場合は、抽出条件とは違って、結合条件を満たす各行のペアが組み合わされて、レコードセットでは単一の行になります。

結合には、内部結合、外部結合、クロス結合、および不等結合という 4 つの基本的な種類があります。この記事では、使用できる各種類の結合、それぞれの種類の用途、および結合の作成方法について説明します。

ページの先頭へ

結合されたテーブルの両方で同じ値が存在する行を表示します。

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

内部結合は、最も一般的な種類の結合です。結合するテーブルの一方が、もう一方のテーブルの行に一致していることを、結合するフィールドのデータに基づいて、クエリ内で指定します。内部結合を使用したクエリを実行すると、結合の対象となる両方のテーブルに共通の値が存在する行のみが、クエリ操作の対象となります。

内部結合の使用方法

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

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

クエリの中で、リレーションシップを作成していないクエリどうしを使用する場合、それらのクエリ間の内部結合や、クエリとテーブル間の内部結合は、自動的には作成されません。通常は自分で作成する必要があります。内部結合を作成するには、一方のデータ ソースのフィールドを他のデータ ソースのフィールドにドラッグします。2 つのフィールドの間には、結合が作成されたことが示す線が表示されます。

内部結合の SQL 構文

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

Table1の内部結合table2からtable1にします。field1 table2 を比較します。field2

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

引数

説明

table1table2

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

field1field2

結合するフィールドの名前。フィールドが Numeric 型 (Numeric) でない場合は、両方のフィールドが同じデータ型であり、両方のフィールドに格納されているデータが同じ種類である必要があります。ただし、同じ名前である必要はありません。

比較します。

"="、"<"、">"、"<="、">="、"<>" などの比較演算子。

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

ページの先頭へ

1 つのテーブルのすべての行と、他のテーブルの対応する行を表示します。

外部結合の場合は、結合の両側で完全に一致する行だけではなく、一方のテーブルのすべての行と、もう一方のテーブルの行のうちで結合の両側で同じ値を持つものをクエリの対象とするよう指定します。

外部結合には左結合と右結合があります。左結合の場合、SQL ステートメントの FROM 句の最初のテーブルは、すべての行が対象となります。他のテーブルは、結合するフィールドの値が両方のテーブルで一致する行のみが対象となります。右結合の場合、SQL ステートメントの FROM 句の 2 番目のテーブルは、すべての行が対象となります。他のテーブルは、結合するフィールドの値が両方のテーブルで一致する行のみが対象となります。

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

外部結合の一方の側の行の中には、もう一方のテーブルには一致する行がないものがあります。クエリ結果で返されるフィールドでは、一致する行がない側のテーブルのフィールドは空となります。

外部結合の使用方法

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

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

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

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

  2. [結合プロパティ] ダイアログ ボックスで、2 番と 3 番のオプションを参照します。

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

  4. 結合が表示され、すべての行が取り込まれるデータ ソースから、結合条件を満たす行のみが取り込まれるデータ ソースに向かって、矢印が表示されます。

あいまいな外部結合

左への参加と内部結合を含むクエリを作成する場合は、アクセスできないことがあります決定するために最初に実行する操作に参加します。結果がかどうか、左の結合または内部結合を最初に実行することによって異なるため、エラー メッセージが表示されます。

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

外部結合の SQL 構文

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

Table1の [左 |右] への参加table2
table1.field1 table2.field2 を比較します。

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

引数

説明

table1table2

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

field1field2

結合するフィールドの名前。両方のフィールドが同じデータ型で、格納されるデータが同じ種類である必要があります。ただし、同じ名前である必要はありません。

比較します。

"="、"<"、">"、"<="、">="、"<>" などの比較演算子。

外部結合の構文の詳細については、「 LEFT JOIN、操作および RIGHT JOIN 操作」を参照してください。

ページの先頭へ

両方のテーブルのすべての行を表示して、一般的な値が入っている結合

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

ユニオン クエリを使用して完全外部結合を実行するには、次の手順を実行します。

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

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

  3. SQL コードをコピーするには、ctrl キーを押しながら C キーを押します。

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

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

    注: ユニオン クエリを使用して完全外部結合を実行する場合は、ALL キーワードを使用しないでください。

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

  7. 貼り付けたコードで、"LEFT JOIN" を "RIGHT 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 つのテーブルまたはクエリの行のすべての組み合わせを調べる場合には、クロス結合を使用します。たとえば、自社のこの 1 年間の業績が非常に好調だったため、顧客への還元を計画しているとします。その場合、各顧客の購入額の和を求めるクエリと、還元率の一覧を表す小さなテーブルを作成したうえで、クロス結合で両者を結合する別のクエリを実行します。このクエリでは、各顧客の還元額の候補の一覧が表示されます。

クロス結合の使用方法

クエリの中で、複数のテーブルまたはクエリを使用し、各テーブルまたはクエリに対して明示的な結合を 1 つも作成しなかった場合には、クロス結合が生成されます。明示的に結合していない各テーブルまたは各クエリのそれぞれの行を、他の各テーブルまたは各クエリのそれぞれの行と結合したものが結果として得られます。前述の還元額の例で考えてみましょう。顧客の数が 91、還元率の候補の数が 5 だった場合、クロス結合で得られる行の数は 455 (91 と 5 の積) です。

意図しないクロス結合では、膨大な数の行がクエリ結果として生成される可能性があります。しかも、これらの結果は、多くの場合は無意味です。各行どうしをすべて結合するという意図がない場合には、結合結果に含まれる行の大半は、意味をなさないからです。さらには、意図しないクロス結合を使用しているクエリは、実行に非常に長い時間を要することがあります。

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

1. 丸で囲んだフィールドどうしを結合する必要があります。

意図しない外積
意図しないクロス結合で返された外積

1. 膨大なレコード数となっています。

正しいクエリ結果
正しい結合を作成した後の結果

1. レコード数がずっと少なくなっています。

ページの先頭へ

等しくないフィールド値に基づいてテーブルを結合します。

結合は、結合するフィールドが等しいという条件に必ずしも基づく必要はありません。結合の条件では、任意の比較演算子を使用できます。たとえば、より大きい (>)、より小さい (<)、等しくない (<>) などです。等しいという条件に基づかない結合は、不等結合と呼ばれます。

2 つのデータ ソース間で等しくないフィールド値に基づいて行を結合する場合には、不等結合を使用します。一般に、不等結合では、より大きい (>)、より小さい (<)、以上 (>=)、または以下 (<=) の各比較演算子を条件として使用します。等しくない (<>) 演算子に基づく不等結合では、クロス結合と同様に非常に多数の行が返る場合があり、結果の意味を判断しづらいことがあります。

不等結合の使用方法

不等結合はデザイン ビューではサポートされていません。SQL ビューを使用する必要があります。ただし、デザイン ビューで結合を作成した後で SQL ビューに切り替え、等号 (=) の比較演算子を探し、目的の演算子に変更することはできます。その後で、デザイン ビューでクエリを再度開くには、まず SQL ビューで比較演算子を等号 (=) に戻す必要があります。

結合を削除する

不要な結合が自動的に作成された場合や、誤って結合を作成した場合  (データ型が一致しないフィールドどうしの結合など)  は、結合を削除できます。

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

  2. Del キーを押します。

または

  • クエリ デザイン グリッドで、削除する結合をマウスの右ボタンでクリックし、Del キーを押します。

ページの先頭へ

注: 機械翻訳についての免責事項: この記事の翻訳はコンピューター システムによって行われており、人間の手は加えられていません。マイクロソフトでは、英語を話さないユーザーがマイクロソフトの製品、サービス、テクノロジに関するコンテンツを理解するのに役立てるため、こうした機械翻訳を提供しています。記事は機械翻訳されているため、用語、構文、文法などに誤りがある場合があります。

関連項目

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

結合ユニオン クエリを使用して選択クエリをいくつかの結果

複数のテーブルに基づくクエリを作成します。

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

スキルを磨く
トレーニングの探索
新機能を最初に入手
Office Insider に参加する

この情報は役に立ちましたか?

ご意見をいただきありがとうございます。

フィードバックをお寄せいただき、ありがとうございます。Office サポートの担当者におつなぎいたします。

×