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

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

注: 最新のヘルプ コンテンツをできるだけ早く、お客様がお使いの言語で提供したいと考えております。このページは、自動翻訳によって翻訳されているため、文章校正のエラーや不正確な情報が含まれている可能性があります。私たちの目的は、このコンテンツがお客様の役に立つようにすることです。お客様にとって役立つ情報であったかどうかを、このページの下部でお知らせください。簡単に参照できるように、こちらに英語の記事があります。

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

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

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

この記事の内容

概要

結合の種類

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

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

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

クロス結合

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

結合を削除する

概要

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

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

クエリ操作に含まれるデータと一致するルールを確立することで、結合はクエリの抽出条件を同じように動作します。 条件とは異なり、結合の条件を満たす行のペアごとを 1 つの行を作成するレコード セットに結合することを結合も指定します。

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

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

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

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

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

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

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

ページの先頭へ

結合の種類

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

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

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

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

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

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

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

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

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

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

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

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

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

内部結合は、最も一般的な結合の種類です。 クエリを結合のいずれかからその行を通知する結合フィールドのデータに基づいて、その他のテーブルの行をテーブルに対応しています。 内部結合でクエリを実行すると、結合されたテーブルの両方で同じ値が存在する行のみがクエリ操作に含まれます。

内部結合の使用方法

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

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

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

内部結合の SQL 構文

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

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

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

引数

説明

table1table2

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

field1field2

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

compare

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

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

ページの先頭へ

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

外部結合操作クエリを結合の両側の行の一部と正確に対応していますが、クエリは、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

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

compare

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

外部結合の構文の詳細については、「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 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 つのテーブルまたはクエリの間に行の組み合わせを調べる場合は、クロス結合を使用します。 たとえば、ビジネスは、1 年間があり、顧客に還元を検討しています。 各顧客の購入を合計するクエリを作成、還元率、小さなテーブルを作成する、およびクロス結合を実行する別のクエリで、2 つを結合することができます。 終了するには、「顧客ごと還元セットを表示するクエリを使用していますいます。

クロス結合の使用方法

クロス結合テーブルまたはクエリをクエリに含めるとテーブルごとに 1 つ以上の明示的な結合を作成したり、しないクエリは、いつでもが生成されます。 Access では、各テーブルまたはクエリを他のテーブルまたはクエリの結果に 1 行おきに明示的に参加していないをからすべての行を結合します。 前の段落からリベート シナリオを検討してください。 91 顧客があるし、5 つの還元率を確認することを想定しています。 クロス結合では、455 行 (91 と 5 の製品) が返されます。

想像、意図しないクロス結合は、クエリ結果の膨大な数の行を作成できます。 さらに、これらの結果は、実際には、しない場合に 1 行おきにすべての行を結合する場合は、ほとんどの結果に表示される合計行に意味をかけないことがあるためです。 最後に、意図しないクロス結合を使用するクエリには、実行に時間がかかります。

クエリのデザイン ビューでの意図しないクロス結合
クエリのデザイン ビューで意図しないクロスへの参加します。

1. 丸で囲んだフィールドは、互いに結合する必要があります。

意図しないクロス積
[意図しないクロス結合によって返されるクロス積を求めます。

1 レコード数が非常に大きなに注意してください。

訂正したクエリ結果
適切な結合を作成した後の結果。

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

ページの先頭へ

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

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

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

不等結合の使用方法

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

結合を削除する

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

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

  2. DELキーを押します。

または

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

ページの先頭へ

関連項目

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

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

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

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

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

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

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

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

×