DBJoinType

概要


AlierTable.join() メソッドで結合方法(引数のプロパティ joinType)を指定するために使う列挙体です。

JavaScriptにおける列挙体(enum)
  • JavaScript の言語仕様に列挙体(enumはありませんが、代わりに同じ役割を果たすものとして、凍結された(frozen)オブジェクトが使えます。 凍結されたオブジェクト(frozen object)とは、プロパティの追加・変更・削除ができないオブジェクトを指します(MDNの Object.freeze() を参照)。

プロパティ


CROSS_JOIN:

交差結合CROSS JOIN)することを示す識別子です。

交差結合する場合、AlierTable.join() の引数の結合条件(引数プロパティ on および using)は指定できません

交差結合では、左項のテーブルのレコードと右項のテーブルのレコードのすべての組み合わせを作ります。

例えば、カラム (a) を持つテーブル t1 とカラム (X, Y) を持つテーブル t2 の交差結合 t1 CROSS JOIN t2 は、カラム (a, X, Y) (順不同)を持つテーブルとなります。 またテーブル t1

  • (1),
  • (2)

というレコードを持ち、テーブル t2

  • ('a', 'A'),
  • ('b', 'B'),
  • ('c', 'C')

というレコードを持っている場合、それらの交差結合は以下のようになります:

  • (1, 'a', 'A'),
  • (1, 'b', 'B'),
  • (1, 'c', 'C'),
  • (2, 'a', 'A'),
  • (2, 'b', 'B'),
  • (2, 'c', 'C')

INNER_JOIN:

内部結合INNER JOIN)することを示す識別子です。

内部結合する場合、AlierTable.join() の引数の結合条件(引数プロパティ on または using のいずれか一方)の指定は必須です

内部結合では、左右のテーブルの交差結合の結果のうち、与えられた条件(結合条件)を満たすもの取り出します。

例えば、カラム (a) を持つテーブル t1 とカラム (X, Y) を持つテーブル t2t1.a = 2 AND t2.X <> 'b' という条件で内部結合するとします(t1 INNER JOIN t2 ON t1.a = 2 AND t2.X <> 'b')。このとき結合テーブルはカラム (a, X, Y) (順不同)を持つテーブルとなります。またテーブル t1

  • (1),
  • (2)

というレコードを持ち、テーブル t2

  • ('a', 'A'),
  • ('b', 'B'),
  • ('c', 'C')

というレコードを持っている場合、t1.a = 2 AND t2.X <> 'b' という条件の下での内部結合の結果は以下のようになります:

  • (2, 'a', 'A'),
  • (2, 'c', 'C')

LEFT_OUTER_JOIN

左外部結合LEFT OUTER JOIN)することを示す識別子です。

左外部結合する場合、AlierTable.join() の引数の結合条件(引数プロパティ on または using のいずれか一方)の指定は必須です

左外部結合では、内部結合の結果に加えて、結合条件を満たさない左項のテーブルのレコードについて右項のカラムの値を NULL としたレコードを取り出します。

例えばカラム (a) を持つテーブル t1 とカラム (X, Y) を持つテーブル t2t1.a = 2 AND t2.X <> 'b' という条件で左外部結合するとします(t1 LEFT OUTER JOIN t2 ON t1.a = 2 AND t2.X <> 'b')。このとき結合テーブルはカラム (a, X, Y) (順不同)を持つテーブルとなります。またテーブル t1

  • (1),
  • (2)

というレコードを持ち、テーブル t2

  • ('a', 'A'),
  • ('b', 'B'),
  • ('c', 'C')

というレコードを持っている場合、t1.a = 2 AND t2.X <> 'b' という条件の下での左外部結合の結果は以下のようになります:

  • (1, NULL, NULL),
  • (2, 'a', 'A'),
  • (2, 'c', 'C')

RIGHT_OUTER_JOIN

右外部結合RIGHT OUTER JOIN)することを示す識別子です。

右外部結合する場合、AlierTable.join() の引数の結合条件(引数プロパティ on または using のいずれか一方)の指定は必須です

右外部結合では、内部結合の結果に加えて、結合条件を満たさない右項のテーブルのレコードについて左項のカラムの値を NULL としたレコードを取り出します。

例えばカラム (a) を持つテーブル t1 とカラム (X, Y) を持つテーブル t2t1.a = 2 AND t2.X <> 'b' という条件で右外部結合するとします(t1 RIGHT OUTER JOIN t2 ON t1.a = 2 AND t2.X <> 'b')。このとき結合テーブルはカラム (a, X, Y) (順不同)を持つテーブルとなります。またテーブル t1

  • (1),
  • (2)

というレコードを持ち、テーブル t2

  • ('a', 'A'),
  • ('b', 'B'),
  • ('c', 'C')

というレコードを持っている場合、t1.a = 2 AND t2.X <> 'b' という条件の下での右外部結合の結果は以下のようになります:

  • ( 2, 'a', 'A'),
  • ( 2, 'c', 'C'),
  • (NULL, 'b', 'B')

FULL_OUTER_JOIN

完全外部結合FULL OUTER JOIN)することを示す識別子です。

完全外部結合する場合、AlierTable.join() の引数の結合条件(引数プロパティ on または using のいずれか一方)の指定は必須です

完全外部結合では、内部結合の結果に加えて、結合条件を満たさない左項のテーブルのレコードについて右項のカラムの値を NULL としたレコードと、結合条件を満たさない右項のテーブルのレコードについて左項のカラムの値を NULL としたレコードを取り出します。 言い換えると、左外部結合と右外部結合の結果の和集合を与えます。

例えばカラム (a) を持つテーブル t1 とカラム (X, Y) を持つテーブル t2t1.a = 2 AND t2.X <> 'b' という条件で完全外部結合するとします(t1 FULL OUTER JOIN t2 ON t1.a = 2 AND t2.X <> 'b')。 このとき結合テーブルはカラム (a, X, Y) (順不同)を持つテーブルとなります。またテーブル t1

  • (1),
  • (2)

というレコードを持ち、テーブル t2

  • ('a', 'A'),
  • ('b', 'B'),
  • ('c', 'C')

というレコードを持っている場合、t1.a = 2 AND t2.X <> 'b' という条件の下での完全外部結合の結果は以下のようになります:

  • ( 1, NULL, NULL),
  • ( 2, 'a', 'A'),
  • ( 2, 'c', 'C'),
  • (NULL, 'b', 'B')

NATURAL_INNER_JOIN

自然内部結合NATURAL INNER JOIN)することを示す識別子です。

自然内部結合する場合、AlierTable.join() の引数の結合条件(引数プロパティ on および using)は指定できません

自然内部結合は左右のテーブルで共通するすべてのカラムについて USING 条件を課した内部結合です。 つまり、左右のテーブルでそれぞれ同名のカラムの値が一致するという条件で内部結合し、その上で同名カラムについては1つにまとめます。

例えば、カラム (id, x) を持つテーブル t1 とカラム (id, y) を持つテーブル t2 自然内部結合するとします(t1 NATURAL INNER JOIN t2)。 これは USING を使った内部結合 t1 INNER JOIN t2 USING (id) と等価です。 このとき結合テーブルはカラム (id, x, y) (順不同)を持つテーブルとなります(カラム t1.id, t2.idid としてまとめられていることに注意してください)。 またテーブル t1

  • (0, 'z'),
  • (1, 'a'),
  • (2, 'b')

というレコードを持ち、テーブル t2

  • (1, 'A'),
  • (2, 'B'),
  • (3, 'C')

というレコードを持っている場合、自然内部結合の結果は以下のようになります:

  • (1, 'a', 'A'),
  • (2, 'b', 'B')

NATURAL_LEFT_OUTER_JOIN

自然左外部結合NATURAL LEFT OUTER JOIN)することを示す識別子です。

自然左外部結合する場合、AlierTable.join() の引数の結合条件(引数プロパティ on および using)は指定できません

自然左外部結合は左右のテーブルで共通するすべてのカラムについて USING 条件を課した左外部結合です。 つまり、左右のテーブルでそれぞれ同名のカラムの値が一致するという条件で左外部結合し、その上で同名カラムについては1つにまとめます。

例えば、カラム (id, x) を持つテーブル t1 とカラム (id, y) を持つテーブル t2 自然左外部結合するとします(t1 NATURAL LEFT OUTER JOIN t2)。 これは USING を使った左外部結合 t1 LEFT OUTER JOIN t2 USING (id) と等価です。 このとき結合テーブルはカラム (id, x, y) (順不同)を持つテーブルとなります(カラム t1.id, t2.idid としてまとめられていることに注意してください)。 またテーブル t1

  • (0, 'z'),
  • (1, 'a'),
  • (2, 'b')

というレコードを持ち、テーブル t2

  • (1, 'A'),
  • (2, 'B'),
  • (3, 'C')

というレコードを持っている場合、自然左外部結合の結果は以下のようになります:

  • (0, 'z', NULL),
  • (1, 'a', 'A'),
  • (2, 'b', 'B')

NATURAL_RIGHT_OUTER_JOIN

自然右外部結合NATURAL RIGHT OUTER JOIN)することを示す識別子です。

自然右外部結合する場合、AlierTable.join() の引数の結合条件(引数プロパティ on および using)は指定できません

自然右外部結合は左右のテーブルで共通するすべてのカラムについて USING 条件を課した右外部結合です。 つまり、左右のテーブルでそれぞれ同名のカラムの値が一致するという条件で右外部結合し、その上で同名カラムについては1つにまとめます。

例えば、カラム (id, x) を持つテーブル t1 とカラム (id, y) を持つテーブル t2 自然右外部結合するとします(t1 NATURAL RIGHT OUTER JOIN t2)。 これは USING を使った右外部結合 t1 RIGHT OUTER JOIN t2 USING (id) と等価です。 このとき結合テーブルはカラム (id, x, y) (順不同)を持つテーブルとなります(カラム t1.id, t2.idid としてまとめられていることに注意してください)。 またテーブル t1

  • (0, 'z'),
  • (1, 'a'),
  • (2, 'b')

というレコードを持ち、テーブル t2

  • (1, 'A'),
  • (2, 'B'),
  • (3, 'C')

というレコードを持っている場合、自然右外部結合の結果は以下のようになります:

  • (1, 'a', 'A'),
  • (2, 'b', 'B'),
  • (3, NULL, 'C')

NATURAL_FULL_OUTER_JOIN

自然完全外部結合NATURAL FULL OUTER JOIN)することを示す識別子です。

自然完全外部結合する場合、AlierTable.join() の引数の結合条件(引数プロパティ on および using)は指定できません

自然完全外部結合は左右のテーブルで共通するすべてのカラムについて USING 条件を課した完全外部結合です。 つまり、左右のテーブルでそれぞれ同名のカラムの値が一致するという条件で完全外部結合し、その上で同名カラムについては1つにまとめます。

例えば、カラム (id, x) を持つテーブル t1 とカラム (id, y) を持つテーブル t2 自然完全外部結合するとします(t1 NATURAL FULL OUTER JOIN t2)。 これは USING を使った完全外部結合 t1 FULL OUTER JOIN t2 USING (id) と等価です。 このとき結合テーブルはカラム (id, x, y) (順不同)を持つテーブルとなります(カラム t1.id, t2.idid としてまとめられていることに注意してください)。 またテーブル t1

  • (0, 'z'),
  • (1, 'a'),
  • (2, 'b')

というレコードを持ち、テーブル t2

  • (1, 'A'),
  • (2, 'B'),
  • (3, 'C')

というレコードを持っている場合、自然完全外部結合の結果は以下のようになります:

  • (0, 'z', NULL),
  • (1, 'a', 'A'),
  • (2, 'b', 'B'),
  • (3, NULL, 'C')