クエリのデータ ソースを結合する

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

複数のデータ ソースをクエリに含めるには、結合を使い、各データ ソースが互いにどのように関連しているかに基づいて、表示するレコードを絞り込みます。両方のデータ ソースのレコードを結合する場合も、結合を使います。こうすると、2 つのソースのレコードの各ペアは、クエリ結果で 1 つのレコードになります。

この記事では、さまざまな種類の結合とその使い方について説明します。

注: ここでは、全体でデータ ソースを意味する用語の表は、表示されます。テーブルと同様、結合のクエリを使用できます。

概要

内部結合: 結合される 2 つのテーブルで同じ値が入っている行を表示する

左外部結合または右外部結合: 一方のテーブルのすべての行と、もう一方のテーブルの対応する行を表示する

完全外部結合: 2 つのテーブルのすべての行と、同じ値がある場合の結合を表示する

クロス結合: 考えられるすべての行の組み合わせ

不等結合: 等しくないフィールド値に基づいてレコードを組み合わせる

結合を削除する

概要

結合とクエリはリレーションシップとテーブルのような関係です。同じデータ値に基づいて 2 つのソース内のデータが結合される方法を示します。次の図は、クエリのデザイン ビューで示されている結合で、結合のプロパティが [結合プロパティ] ダイアログ ボックスに表示されています。

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

テーブル間には、この行は、[参加を表します。開く結合をダブルクリックして、 結合プロパティ] ダイアログ ボックス (上図の説明) と校閲または結合を変更します。

一定の方向性を持つ結合もあります。ダイアログ ボックスのこの領域では、どのテーブルが結合のどちら側にあるか、どのフィールドを使ってテーブルを結合しているかがわかります。

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

両方のテーブルのフィールドを使うことができ、各テーブルの所定のタスクに関するデータが表示されます。内部結合では、その他のデータは表示されません。外部結合では、一方のテーブルの関係のないレコードをクエリ結果に含めることもできます。

自動的に作成される結合

多くの場合、ユーザーは結合について考える必要はありません。クエリに追加するテーブルにリレーションシップがあると、そのリレーションシップを反映する内部結合が Access によって作成されます。大抵の場合は、これで十分です。2 つのテーブルの正しい組み合わせのデータが確実に取得されて、それぞれのテーブルから適切なデータが取り込まれます。ただし、より包括的な結合が必要な場合もあります。

結合の種類

結合の基本的な種類は、内部結合、外部結合、クロス結合、不等結合の 4 つです。クロス結合と不等結合は上級者向けの結合で、ほとんど使うことはありませんが、結合の動作について完全に理解するためには、この 2 つについても知っておく必要があります。

内部結合: 2 つのテーブルの関連データだけを結合します。

対応するデータが関連テーブルにある場合、Access は内部結合により、そのデータのみテーブルから取り込みます。その逆も同様で、対応するデータがテーブルにある場合は、関連テーブルのデータが取り込まれます。大抵は内部結合を使います。結合を作成しても結合の種類を指定しない場合、内部結合と見なされます。内部結合の便利なところは、同じ値に基づいて 2 つのソースのデータを結合できることです。つまり、完全に一致するデータだけが表示されます。

外部結合: すべての関連データの正しい組み合わせと、一方のテーブルの残りすべてのデータを表示します。

外部結合は内部結合に似ていますが、一方のテーブルの残りの行も追加される点が異なります。外部結合には一定の方向性があります。左外部結合では、結合の最初のテーブルである左側のテーブルのすべてのレコードが取り込まれ、右外部結合では結合の 2 番目のテーブルである右側のテーブルのすべてのレコードが取り込まれます。

完全外部結合: 可能な場合に、すべてのデータを結合します。

システムによっては、外部結合で 2 つのテーブルのすべての行を取り込み、対応する場合に行を結合することができます。これは完全外部結合と呼ばれ、Access では明示的にサポートされていません。ただし、クロス結合で抽出条件を使用して、同様の効果を得ることはできます。

クロス結合: すべてのデータを、すべての可能な方法で結合します。

ほとんどの場合、クエリに 2 つのテーブルを追加し、結合し忘れるとクロス結合になります。Access はこれを、一方のテーブルのすべてのレコードをもう一方のテーブルのすべてのレコードと結合して表示する、つまり考えられるすべての結合を表示すると解釈します。ただし、結合できるデータはないため、この結合で有益な結果がもたらされることはほとんどありません。それでも、クロス結合が必要となるまれなケースもあります。

不等結合: 標準的な結合に似ていますが、等しくない比較に基づいて行を結合します。

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

ページの先頭へ

内部結合: 結合される 2 つのテーブルで同じ値が入っている行を表示する

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

内部結合は最も一般的な結合の種類です。結合されるフィールドの一致する値に基づいて、結合される一方のテーブルの行と対応するもう一方のテーブルの行をクエリの対象とするように指定します。内部結合を使用したクエリが実行されると、結合される両方のテーブルで一致する値を持つ行だけがクエリの対象になります。

内部結合の使用方法

内部結合を作成するには、クエリ デザイン グリッドで、一方のデータ ソースのフィールドをもう一方のデータ ソースのフィールドまでドラッグします。2 つのテーブルのフィールドが結合されて、その間にラインが表示されます。

自動内部結合

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

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

クエリにクエリを追加しても、クエリ間にリレーションシップが作成されていないと、これらのクエリ間またはクエリとテーブルの間に内部結合は自動的に作成されません。一般的には、一方のデータ ソースのフィールドをもう一方のデータ ソースのフィールドにドラッグして、自分で内部結合を作成する必要があります。これを行わないと、クロス結合になってしまう場合があり、意図していない紛らわしい結果になることがあります。

内部結合の SQL 構文

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

FROM table1 INNER JOIN table2 ON table1.field1compopr table2.field2

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

引数

説明

table1table2

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

field1field2

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

compopr

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

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

ページの先頭へ

左外部結合または右外部結合: 一方のテーブルのすべての行と、もう一方のテーブルの対応する行を表示する

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

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

注: どのテーブル結合をダブルクリックしてから、目的の左側のテーブルまたは指定された結合の右側のテーブルが簡単にわかります、 結合プロパティ] ダイアログ ボックス。または、[SQL ビューでは、FROM 句への参加の詳細を調べることができます。

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

外部結合の使用方法

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

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

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

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

  2. [結合プロパティ] ダイアログ ボックス、オプションの横に選択肢が表示されるノート2とオプション3です。

  3. をクリックし、目的のオプションをクリックしてOKします。

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

あいまいな外部結合

LEFT JOIN と INNER JOIN を含むクエリを作成する場合、どちらの結合演算子を最初に実行するのか Access で特定できない場合があります。左結合と内部結合のどちらが先に実行されるかによって結果が変わるため、あいまいな外部結合に関するエラー メッセージが表示されます。

このエラーを修正するには、どちらの結合を最初に実行するかはっきりわかるようにクエリを変更します。

外部結合とクエリの更新機能

Access アプリでは、複数のテーブルを使用するクエリのフィールドを更新できるのは、次の条件が真の場合だけです。

  • フィールドが、クエリの most-many テーブル (別のテーブルのデータを検索するテーブル) のフィールドの場合。

  • クエリ出力に most-many テーブルの主キーが含まれる場合。

  • most-many テーブルが外部結合に含まれ、結合の内側 (左外部結合の左のテーブルまたは右外部結合の右のテーブル) である場合。

いずれかの条件が偽になる場合、フィールドはクエリ データシート内にあるかクエリに基づいたビュー内にあるかにかかわらず、読み取り専用になります。

外部結合の SQL 構文

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

FROM table1 [ LEFT | RIGHT ] JOIN table2
ON table1.field1compopr table2.field2

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

引数

説明

table1table2

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

field1field2

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

compopr

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

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

ページの先頭へ

完全外部結合: 2 つのテーブルのすべての行と、同じ値がある場合の結合を表示する

2 つのテーブルのすべての行を表示し、同じ値に基づいて結合するには、完全外部結合を使います。Access は完全外部結合を明示的にサポートしていませんが、クロス結合で抽出条件を使用して同じ効果を出すことができます。

  1. クエリを作成して 2 つのテーブルを追加します。Access によって自動的に作成された結合がある場合は、削除します。

  2. クエリ出力に含めるフィールドを追加します。

  3. 両方のテーブルの結合フィールドを追加し、それらの [表示] 行のチェック ボックスをオフにします。

  4. クエリ デザイン グリッドで、最初のテーブルの結合フィールドの下で、[抽出条件] 行に 2 番目のテーブルの結合フィールドを指定します。両方の結合フィールドの名前が同じ場合は、テーブルを参照するときに必ずテーブル名を含めてください。

  5. [または] 行で、先ほど入力した抽出条件の下に「Is Null」と入力します。

  6. 次の [または] 行 (最初の [または] 行のすぐ下) で、2 番目のテーブルの結合フィールドの下に「Is Null」と入力します。

このクエリでは、次の結合が返されます。

  • 結合するフィールドの値が一致する行、データは適切に結合される (内部結合)

  • 最初のテーブルの結合されるフィールドに値がない行 (左外側結合の外側)

  • 2 番目のテーブルの結合されるフィールドに値がない行 (右外側結合の外側)

ページの先頭へ

クロス結合: 考えられるすべての行の組み合わせ

クエリにテーブルを含めてもテーブルを結合しないと、クロス結合になります。一方のテーブルの各行ともう一方のテーブルの各行が結合されますが、外積またはデカルト積と呼ばれる結果になります。通常、これはユーザーの意図するところではありません。ただし、クロス結合は仮説的な可能性を見つける場合に役立ちます。

クロス結合の用途

2 つのテーブルまたはクエリの間で、可能な行の結合を調べる場合は、クロス結合を使います。たとえば、自社のこの 1 年間の業績がとても好調だったため、顧客への還元を計画しているとします。その場合、各顧客の購入額の和を求めるクエリと、還元率の一覧を表す小さなテーブルを作成したうえで、クロス結合で両者を結合する別のクエリを実行します。この外積では、各顧客の還元額の候補の一覧が表示されます。

クロス結合の使用方法

クエリに 2 つのテーブルを追加し、その間に結合を作成せずに、両方のテーブルのフィールドをクエリ出力の対象とします。各テーブルまたはクエリで明示的に結合されていないそれぞれの行が、他のテーブルまたはクエリのそれぞれの行と結合されて、クエリ出力として返されます。前述の還元の例で考えてみましょう。顧客の数が 91、還元率の候補の数が 5 だった場合、 クロス結合で得られる行の数は 455 (91 と 5 の積) です。

関連テーブルが追加されると、Access によって内部結合が自動的に作成されます。クロス結合の結果が必要な場合は、この自動結合を削除できます。

意図しないクロス結合では、膨大な数の行がクエリ結果として生成される可能性があります。しかも、これらの結果は、多くの場合は無意味です。行は同じデータに基づいて結合されず、このような結合が対応するものはないからです。

ページの先頭へ

不等結合: 等しくないフィールド値に基づいてレコードを組み合わせる

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

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

不等結合の使用方法

不統合結合はデザイン ビューで明示的にサポートされていませんが、クロス結合で抽出条件を使用して同じ効果を出すことができます。

  1. クエリを作成して不等結合の 2 つのテーブルを追加します。Access によって作成された結合がある場合は、削除します。

  2. 目的の出力フィールドを追加します。

  3. 最初のテーブルの結合フィールドを追加し、[表示] 行のチェック ボックスをオフにします。

  4. [抽出条件] 行で、使用する不等の演算子を入力し、続いて 2 番目のテーブルの結合フィールドを入力します。

このクエリでは、指定した等しくない条件に基づいて 2 つのテーブルから検索されたデータを結合する行が返されます。

ページの先頭へ

結合を削除する

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

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

  2. キーを押してを削除します。

または

  • クエリ デザイン グリッドで、削除、およびをクリックする結合を右クリックしてを削除します。

 ページの先頭へ

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

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

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

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

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

×