データベース結合の種類

結合は、データベースの基本機能です。この機能を使用すると、2 つの異なるテーブルおよび/またはデータベースの内容を、両方の共通フィールド (結合条件) に基づいて、単一のビューにマージできます。 詳細については、テーブルおよびデータベース結合の概要を参照してください。

ドキュメントで複数のテーブルおよび/またはデータベースのデータを使用している場合、サポートされる種類のデータベース結合を使用して、結合操作を実行する必要があります。

BarTender でサポートされる結合の種類の例で参照する 2 つのサンプルテーブルを以下に示します。 テーブル A は従業員とその部門 ID の一覧で、テーブル B は、各従業員に関連付けられた部門名と部門 ID の一覧です。 結合条件として使用する共通のフィールドは、DepartmentID (部門 ID) です。

テーブル A:

FirstName (名)

DepartmentID (部門 ID)

Joe

31

Jane

33

Mark

33

Mary

34

Dan

34

Donna

NULL

テーブル B:

DepartmentID (部門 ID)

DepartmentName (部門名)

31

販売

33

エンジニアリング

34

事務

35

マーケティング

BarTender では、以下の結合の種類がサポートされています。

内部結合は、複数のデータベースからのデータを使用している場合にサポートされる唯一の結合の種類です。 さらに、全外部結合は Excel、Access、および MySQL データベースでサポートされていません。

Closed内部結合

「内部結合」は、最も一般的な結合コマンドの 1 つで、既定の結合の種類として扱われます。 内部結合では、指定したテーブルにおいて、指定した結合フィールドの値に一致するすべての行が返されて組み合わされることによって、新しい結果が作成されます。 テーブル A の行とテーブル B の行の間に一致する値がない場合、その行は結果から除外されます。 上記のサンプルテーブルで DepartmentID を結合条件として使用した場合、内部結合の結果は次のようになります。

FirstName (名)

DepartmentID (部門 ID)

DepartmentName (部門名)

Joe

31

販売

Jane

33

エンジニアリング

Mark

33

エンジニアリング

Mary

34

事務

Dan

34

事務

テーブル A では Donna の部門 ID が NULL として表示されているので、Donna は結果の内部結合テーブルに含まれていません。 テーブル B に含まれない部門 ID が Donna に割り当てられている場合も、Donna に関連付ける対応する行がないので、結果の内部結合テーブルに表示されません。

NULL values are treated differently than other values and cannot be compared to a 0 (zero) value or even to another NULL value. このため、内部結合では、同等のフィールド値がないので、結合条件で使用するフィールドに NULL 値を含む行を返すことができません。

Closed左外部結合

左外部結合」は、右側のテーブル (テーブル B) に一致する行がない場合でも、左側のテーブル (テーブル A) から「すべての」行が返されるという点で内部結合と異なります。右側のテーブルに一致する行がない左側のテーブルの行は、NULL 値と共に結合結果に表示され、右側のテーブルに一致する行がないことが示されます この場合、次のテーブルの "Donna" の場合のように、割り当てられた部門がない場合でも、結果セットにすべての従業員が一覧表示されます。

FirstName (名)

DepartmentID (部門 ID)

DepartmentName (部門名)

Joe

31

販売

Jane

33

エンジニアリング

Mark

33

エンジニアリング

Mary

34

事務

Dan

34

事務

Donna

NULL

NULL

Closed右外部結合

「右外部結合」は、向きが反対であることを除き左外部結合とまったく同じなので、左側のテーブル (テーブル A) のいずれの行にも一致しない場合でも、右側のテーブル (テーブル B) のすべてのエントリが結果セットで返されます。この場合、次のテーブルの「マーケティング」部門の場合のように、従業員が部門に割り当てられていない場合でも、結果セットにすべての部門が表示されます。

FirstName (名)

DepartmentID (部門 ID)

DepartmentName (部門名)

Joe

31

販売

Jane

33

エンジニアリング

Mark

33

エンジニアリング

Mary

34

事務

Dan

34

事務

NULL

35

マーケティング

Closed全外部結合

「全外部結合」では、もう一方のテーブルの一致値が行にない場合でも、右側と左側の両方のテーブルの「すべての」行が結果に含まれます。 もう一方のテーブルに一致行がない行の場合、不足している値は NULL として返されます。 この結果には、「マーケティング」部門 (従業員なし) と従業員 "Donna" (割り当て部門なし) の両方が含まれます。

FirstName (名)

DepartmentID (部門 ID)

DepartmentName (部門名)

Joe

31

販売

Jane

33

エンジニアリング

Mark

33

エンジニアリング

Mary

34

事務

Dan

34

事務

Donna

NULL

NULL

NULL

35

マーケティング

関連トピック