クエリを使ってデータを管理する

外部結合でクエリを作成する

お使いのブラウザーではビデオがサポートされていません。Microsoft Silverlight、Adobe Flash Player、Internet Explorer 9 のいずれかをインストールしてください。

クエリでは、1 つのテーブルからはすべてのレコードを表示し、別のテーブルからは一致するレコードを表示したいという場合があります。これを行うには、外部結合を作成します。

内部結合では、結合された両方のデータ ソース内に一致する ID が存在する場合にのみデータを表示します。たとえば、製品と販売量を表示する場合は、"製品" テーブルと "受注明細" テーブルとの間に内部結合を作成します。クエリを実行すると、注文が発生した製品のみ (すなわち、両方のテーブルに表示される製品) が返されます。

これに対し、外部結合では、1 つのデータ ソースからすべてのデータを返し、別のテーブルまたはデータ ソースから一部のデータを返します。

たとえば、まだ売れていない製品を表示するには、"製品" テーブルからは製品 ID を、"受注明細" テーブルからは一致する注文 IDを返すクエリを作成します。"受注明細" テーブル内に一致するレコードがない製品は、"注文 ID" フィールドに値が含まれていない製品名を返します。

左外部結合と右外部結合

外部結合で、含まれているすべてのレコードを表示するテーブルは、ベース テーブルと呼ばれています。一部のレコード (一致したレコード) のみを表示するテーブルは、セカンダリ テーブルと呼ばれています。

[結合プロパティ] ダイアログ ボックスには、各種の結合で表示される内容が記述されます。

3 つのテーブルと各テーブルの結合プロパティを示すスクリーンショット

顧客が購入した製品を表示するクエリを作成したと仮定します。出力フィールドは、"製品名" フィールド、"注文 ID" フィールド、"数量" フィールドです。

  1. 内部結合両方のテーブルの結合フィールドが等しい行 (レコード) のみ、たとえば、注文が関連付けられている製品のみが取り込まれます。

  2. 左外部結合[のテーブル名] の下に表示されたテーブルからはすべてのレコードを取り込み、[右のテーブル名] の下に表示されたテーブルからは、結合フィールドが等しいレコードのみを取り込みます (たとえば、すべての注文、ただし、製品が関連付けられた当該注文の数量と製品 ID のみ)。

  3. 右外部結合[のテーブル名] の下に表示されたテーブルからはすべてのレコードを取り込み、[左のテーブル名] の下に表示されたテーブルからは、結合フィールドが等しいレコードのみを取り込みます (たとえば、すべての製品。それらの製品に対する注文がない場合でも、"注文 ID" フィールドと "数量" フィールドには空白値が表示される)。

上記の例からわかるように、どのテーブルが左側に配置され、どのテーブルが右側に配置されているのかを把握することが重要です。クエリ ウィンドウでのテーブルの配置方法は実際には異なる可能性があります。クエリで取得されるデータを理解するために、[プロパティ] ダイアログ ボックスに表示される説明をよく読んでください。

1. データ ソースを追加する

  • [作成]、[クエリ デザイン] の順に選択します。

必要なテーブルとクエリをすべて、データ ソースとして追加します (ここで、追加するのを忘れたものがあっても、後でデータ ソースを追加する機会があるので、心配には及びません)。

データ ソースが検出または推測されると、Access によって、データ ソースのリレーションシップが表示される場合があります。

2. 結合を追加する

  • ソース間のリレーションシップが表示されない場合は、結合を追加します。一方のデータ ソース内にある目的のフィールドを、別のデータ ソース内の対応するフィールドまでドラッグします。フィールドのドラッグ元のテーブルは、[結合プロパティ] ダイアログ ボックスで左側に表示されます。既定では、Access は内部結合を作成します。外部結合が必要な場合は、結合の種類を変更します。

    2 つのテーブル間の結合のスクリーンショット

3. 結合を変更する

  1. 変更対象の結合を表す線をダブルクリックします。

  2. [結合プロパティ] ダイアログ ボックスで、外部結合を作成するために、2 番目または 3 番目のオプションを選択します。[OK] を選択します。

    どのテーブルがベース テーブルであるかご注意ください。そのテーブルからはすべてのレコードが表示されます。

    左のテーブルの名前が強調表示された結合プロパティのスクリーンショット

4. クエリを実行する

クエリを作成するための一般的な手順に従い、出力フィールドを追加し、抽出条件を追加し、クエリを実行または保存します。詳細については、「基本的なクエリの作成」をご覧ください。

さらに詳しく

基本的なクエリの作成

Excel のトレーニング

Outlook のトレーニング

選択クエリで左外部結合と右外部結合を使用する方法について説明します。

外部結合には、左と右があり、1 つのテーブルからすべてのデータが返され、もう 1 つのテーブルからは一致するデータのみが返されます。それらは、何かが起こらなかった場合を知りたいときに便利です。たとえば、特定の商品が売れなかった場合、または学生が特定のクラスに登録しなかった場合などです。

そこで、これに少し追加してみましょう。

すべてのデータを返すテーブルは "ベース テーブル" と呼ばれ、一致を返すテーブルは "セカンダリ テーブル" と呼ばれます。

ベース テーブルであるか、セカンダリ テーブルであるかは、結合の方向によって決まります。

右外部結合を使用している場合、右側のテーブルがベース テーブルです。左外部結合を使用している場合、左側のテーブルがベース テーブルです。

[結合プロパティ] ダイアログ ボックスで、左外部結合を使用するか、右外部結合を使用するかを制御します。結合線を選択後、右クリックかダブルタップのいずれかを行い、[結合プロパティ] を選択後、2 番目か 3 番目のオプションをタップします。

では、この作業をしてみましょう。

[作成] タブで [クエリ デザイン] を選択します。ここで、注文の詳細と製品テーブルを追加します。

Access では、結合のパターンとして一対多のリレーションシップが使用されていますが、それは内部結合を意味しています。

製品名フィールドと数量フィールドを追加し、クエリを実行すると、注文された製品のデータだけが返されます。

これは、クエリが注文されていない製品のデータを返していれば、ここに空のレコードが表示されることからわかります。

デザイン ビューに戻り、結合線を右クリックもしくはダブルタップし、[結合プロパティ] を選択します。2 番目のオプションを選択し、結合線に注意します。

矢印は外部結合を示し、またセカンダリ テーブルを指していることも示しています。クエリを実行し、データを最小から最大に並べ替えると、どの製品が売れていないかがわかります。

右外部結合に変更するとどうなるでしょうか。

変更し、クエリを実行すると、内部結合と同じ結果が得られます。空のレコードはありません。

[結合プロパティ] ダイアログ ボックスを見ると、その理由がわかります。

受注明細テーブルからすべてのデータを返しますが、製品テーブルからは一致のみを返します。つまり、対応する注文の製品だけが表示され、それは内部結合で返される結果と同じになります。

複数のデータ ソースを使用する選択クエリで外部結合を使用する方法を紹介しました。結合を十分に考慮し、目的の結果を得られない場合は、いつでも変更できます。

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

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

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

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

×