Ms-access-joins

提供:Dev Guides
移動先:案内検索

MS Access-参加

データベースは、相互の論理関係を可能にするデータのテーブルのコレクションです。 リレーションシップを使用して、共通のフィールドでテーブルを接続します。 テーブルは任意の数のリレーションシップの一部にできますが、各リレーションシップには常に正確に2つのテーブルがあります。 クエリでは、関係は Join で表されます。

参加とは

結合は、データベース内の2つ以上のテーブルのレコードを結合する方法を指定します。 概念的には、結合はテーブルのリレーションシップに非常に似ています。 実際、結合とは、テーブルとの関係を照会することです。

以下は、この章で説明する2つの基本的な結合タイプです-

  • 内部結合
  • 外部結合

どちらも*クエリデザインビュー*から簡単に作成できます。

内部結合

ここで Inner Join を理解しましょう-

  • 最も一般的な結合の種類は、Microsoft Accessの既定の結合の種類でもある内部結合です。
  • 内部結合では、両方のテーブルの結合フィールドが等しい行またはレコードのみが表示されます。
  • この結合タイプは、それらの共通フィールドとその中に含まれるデータを調べます。 一致のみが表示されます。

内部結合

外部結合

  • 外部結合*とは何かを理解しましょう−
  • 外部結合では、1つのテーブルのすべての行と、結合されたフィールドが等しい他のテーブルの行またはレコードのみが表示されます。
  • つまり、外部結合では、1つのテーブルのすべての行と、他のテーブルの対応する行のみが表示されます。

外部結合

他の結合タイプもあります-

左外部結合と右外部結合

  • 左外部結合*と*右外部結合*を理解しましょう-
  • すべての行を表示するテーブルを選択できます。
  • 最初のテーブルのすべての行を含む左外部結合を作成できます。

左結合

*2番目のテーブルのすべての行を含む右外部結合を作成できます。

右結合

[作成]タブに移動し、[デザインビュー]からクエリを作成します。* tblProjects および *tblTask​​s を選択し、次のスクリーンショットのように[テーブルの表示]ダイアログボックスを閉じます。

TblTask​​s

*tblProjects* から *ProjectName* フィールドを追加し、 *tblTask​​s* テーブルから *TaskTitle、StartDate* および *DueDate* を追加します。

プロジェクト名の追加

クエリを実行してみましょう。

プロジェクトの詳細

いくつかのプロジェクトのレコードのみを表示しています。 これらのプロジェクトのいくつかには、そのプロジェクトに関連付けられた多くのタスクがあり、この情報は ProjectID フィールドを通じて関連付けられています。

  • Microsoft Accessでこのクエリを作成すると、Accessは作成した関係からこの関係を取得します。
  • デフォルトでは、これらの2つのフィールド間、これらの2つのテーブル間で* Inner Joinと呼ばれるものを作成します。これが、これらの2つのテーブルからこの情報を関連付ける方法です。
  • 一致のみが表示されているため、このクエリを実行すると、このクエリでレコードセットの一部として表示されない tblProjects にリストされている他の多くのプロジェクトがあります。その内部結合を介して結合されます。これもまた、クエリのデフォルト結合です。

ただし、関係を変更する場合は、外部結合を作成する、つまり、 tblProjects のすべてのプロジェクト、そのテーブルにあるすべてのレコード、およびすべての tblTask​​s からのタスク—結合プロパティを開きます。関係線をダブルクリックするだけでこれを実行できます。

結合プロパティ

Accessは、[結合のプロパティ]ダイアログに左側のテーブル名と右側のテーブル名を表示します。

  • 左の列名と右の列名、および最初のラジオボタンには、両方のテーブルの結合フィールドが等しく、内部結合であり、リレーションシップを作成するとき、結合を作成するときにデフォルトで選択される行のみが含まれますクエリでは、しかし、あなたはそれを変更することができます。 他にも2つのオプションがあります。 tblProjects のすべてのレコードと、結合されたフィールドが等しく、このフィールドが左外部結合である *tblTask​​s のレコードのみを含めることができます。
  • 3番目のオプションとして、tblTask​​sのすべてのレコードと、結合されたフィールドが等しく、これがRight Outer JoinであるtblProjectsのレコードのみを含めます。

これらは、デザインビューから簡単に作成できるさまざまな種類の結合です。 2番目のオプションであるLeft Outer Joinを選択して、[ Ok ]をクリックします。

私たちは今、他のステップを見てみましょう-

その他のステップ

リレーションシップラインを見ると、 tblTask​​sProjectID を指す小さな矢印が表示されます。 このクエリを実行すると、次の結果が表示されます。

矢印ポインティング結果

ご覧のとおり、関連するタスクがあるかどうかに関係なく、すべてのプロジェクト名が表示されています。 また、多数のnullフィールドが表示されます。 これらすべてのフィールドは、 tblTask​​s に関連情報がないため、これらはすべて空白です。 ここで、もう一度[デザインビュー]に移動して、関係線をダブルクリックします。

関連タスク

[結合のプロパティ]ダイアログボックスで、右外部結合の3番目のオプションを選択し、[ Ok ]をクリックします。

その他のステップ

次に、関係線を見てください。 tblProjectsProjectID を指す小さな矢印が表示されます。 このクエリを実行すると、次の結果が表示されます。

関係線

自己結合

自己結合は、別の種類の結合です。 自己結合は、同じテーブル内の一致するフィールドを関連付けます。 たとえば、同じテーブル内の別のフィールド(従業員ID)に保存されている同じ種類の番号を参照するスーパーバイザーフィールドを持つ従業員のテーブルを見てください。

自己結合

Kaitlin Rasmussenのスーパーバイザーが誰であるかを知りたい場合は、そのスーパーバイザーフィールドに格納されている番号を取得し、その従業員IDフィールドのまったく同じテーブル内で調べて、Charity Hendricksがスーパーバイザーであることを知る必要があります。

このテーブルは、正規化されていないため、リレーショナルデータベースの理想的な構造ではありません。

従業員の名前を上司の名前と一緒にリストするだけのクエリを作成する状況がある場合、自己結合を作成しない限り、簡単にクエリを実行する方法はありません。

自己結合を表示するには、次のフィールドを持つテーブルを作成し、データを入力します。

テーブルの作成

ここで、従業員の名、次に監督者の名前を使用してリストを再度作成します。 *クエリデザインビュー*からクエリを作成しましょう。

次に、 tblEmployees テーブルを追加します。

TblEmployeesを追加

このダイアログボックスを閉じます。

次に、従業員の名と姓を追加します。

従業員の名前

ここで、このテーブルとそれ自体の間に関係を作成する方法が必要です。 これを行うには、* show tableダイアログボックス*を開いて、tblEmployeesをもう一度追加する必要があります。

テーブルダイアログボックスの表示

このクエリビューで同じテーブルの別のコピーを作成しました。 次に、自己結合を作成する必要があります。 これを行うには、 tblEmployees テーブルの[Supervisor]をクリックし、マウスボタンを押したまま、コピーしたテーブルの EmployeeID のすぐ上にドロップします( tblEmployees_1 )。 次に、コピーしたテーブルから名と姓を追加します。

自己結合の作成

クエリを実行すると、次の結果が表示されます。

表示名

従業員の名前とその上司の名前が表示されます。 そして、これがMicrosoft Accessで自己結合を作成する方法です。