AlierDBTable: join()
対象のテーブルを与えられたテーブルと結合します。
構文
alierDBTable.join({ table }) => AlierDBTable
alierDBTable.join({ table, joinType }) => AlierDBTable
alierDBTable.join({ table, on }) => AlierDBTable
alierDBTable.join({ table, using }) => AlierDBTable
alierDBTable.join({ table, columns }) => AlierDBTable
alierDBTable.join({ table, columns, on }) => AlierDBTable
alierDBTable.join({ table, columns, using }) => AlierDBTable
alierDBTable.join({ table, columns, columnAliases }) => AlierDBTable
alierDBTable.join({ table, columns, columnAliases, on }) => AlierDBTable
alierDBTable.join({ table, columns, columnAliases, using }) => AlierDBTable
alierDBTable.join({ table, joinType, on }) => AlierDBTable
alierDBTable.join({ table, joinType, using }) => AlierDBTable
alierDBTable.join({ table, joinType, columns }) => AlierDBTable
alierDBTable.join({ table, joinType, columns, on }) => AlierDBTable
alierDBTable.join({ table, joinType, columns, using }) => AlierDBTable
alierDBTable.join({ table, joinType, columns, columnAliases }) => AlierDBTable
alierDBTable.join({ table, joinType, columns, columnAliases, on }) => AlierDBTable
alierDBTable.join({ table, joinType, columns, columnAliases, using }) => AlierDBTable
引数
単一の、以下のプロパティを持つオブジェクトを引数にとります。
-
table:AlierDBTable結合するテーブルです。
JOIN演算の右項として使われます。 -
columns:string|Array<string>|undefined(省略可)結合テーブルから取得するカラム名のリストです。
カラム名を表す文字列の配列、またはカンマ区切り文字列を指定できます。
このプロパティの指定は任意です。指定がない場合、すべてのカラムが取得されます。
-
columnAliases:object|undefined(省略可)取得するカラム名とカラム名の別名の組のオブジェクトです。
各プロパティ名がカラム名を表し、プロパティの値がそのカラムに対する別名を表す文字列です。 プロパティ名であるカラム名が
columnsのリストに含まれていない場合、カラムの別名は無視されます。このプロパティの指定は任意です。指定しなかった場合、カラムに別名は設定されません。
-
joinType:DBJoinType|undefined(省略可)結合する方法を指定します。 指定できる値は
DBJoinTypeのプロパティとして定義された下記の定数のみです。DBJoinType.CROSS_JOINDBJoinType.INNER_JOINDBJoinType.LEFT_OUTER_JOINDBJoinType.RIGHT_OUTER_JOINDBJoinType.FULL_OUTER_JOINDBJoinType.NATURAL_INNER_JOINDBJoinType.NATURAL_LEFT_OUTER_JOINDBJoinType.NATURAL_RIGHT_OUTER_JOINDBJoinType.NATURAL_FULL_OUTER_JOIN
このプロパティの指定は任意です。指定がない場合、テーブルは内部結合(
INNER JOIN)されます(DBJoinType.INNER_JOIN)。 -
on:string|undefined(省略可)JOIN演算のON句に与える結合条件を表す条件式です。 条件式の記法についてはSQL 式のスクリプト上での表現を参照してください。このプロパティは
joinTypeの値を以下のいずれかに指定した場合のみ指定できます:DBJoinType.INNER_JOINDBJoinType.LEFT_OUTER_JOINDBJoinType.RIGHT_OUTER_JOINDBJoinType.FULL_OUTER_JOIN
以下の値を
joinTypeに指定した場合、このプロパティは指定できません:DBJoinType.CROSS_JOINDBJoinType.NATURAL_INNER_JOINDBJoinType.NATURAL_LEFT_OUTER_JOINDBJoinType.NATURAL_RIGHT_OUTER_JOINDBJoinType.NATURAL_FULL_OUTER_JOIN
また、
onプロパティとusingプロパティの両方を指定することはできません。このプロパティの指定は条件付きで任意です。指定がない場合、
ON句は使われません。 -
using:string|Array<string>|undefined(省略可)JOIN演算のUSING句に与えるカラム名、またはカラム名のリストです。 単一のカラム名を指定する場合は文字列を使用し、リストを指定する場合は文字列の配列を使用します。このプロパティは
joinTypeの値を以下のいずれかに指定した場合のみ指定できます:DBJoinType.INNER_JOINDBJoinType.LEFT_OUTER_JOINDBJoinType.RIGHT_OUTER_JOINDBJoinType.FULL_OUTER_JOIN
以下の値を
joinTypeに指定した場合、このプロパティは指定できません:DBJoinType.CROSS_JOINDBJoinType.NATURAL_INNER_JOINDBJoinType.NATURAL_LEFT_OUTER_JOINDBJoinType.NATURAL_RIGHT_OUTER_JOINDBJoinType.NATURAL_FULL_OUTER_JOIN
また、
onプロパティとusingプロパティの両方を指定することはできません。このプロパティの指定は条件付きで任意です。指定がない場合、
USING句は使われません。
-
SQLite 3.39.0 以降と3.38.x 以前で
USINGまわりの挙動が変更されています。```js // これは 3.38.x 以前では構文エラーになります(no such column: C.x) const BC = B.join({table:C, using:"x"}); const ABC = A.join({table:BC, on:"A.x = C.x"}) // これは 3.38.x 以前でも実行可能です。 const BC = B.join({table:C, using:"x"}); const ABC = BC.join({table:A, on:"A.x = C.x"}) ``` -
対策として
JOINの右項にUSINGが使われているなら左項と入れ替え、LEFT_OUTER_JOINをRIGHT_OUTER_JOIN,RIGHT_OUTER_JOINをLEFT_OUTER_JOINに変更してください。 -
NATURALに関してもUSINGを使う場合と同様に変更してください。
返値: AlierDBTable
結合結果の AlierDBTable が返ります。
例外
DBError- 引数にプロパティ
tableが指定されなかった場合 - 引数のプロパティ
tableの値がAlierDBTableのインスタンスでなかった場合 - 引数のプロパティ
tableに指定されたAlierDBTableとjoin()の対象のAlierDBTableが互いに異なるデータベースのテーブルを指している場合 - 引数にプロパティ
onとusingの両方が指定されていた場合 - 引数のプロパティ
joinTypeの値が以下のいずれかで、かつプロパティonとusingのいずれも指定されていない場合: - 引数のプロパティ
joinTypeの値が以下のいずれかで、かつプロパティonとusingのいずれかが指定されていた場合:
- 引数にプロパティ
TypeError- 引数のプロパティ
onにnullまたはundefinedでない値が設定されていて、それが文字列でない場合 - 引数のプロパティ
usingにnullまたはundefinedでない値が設定されていて、それが文字列でも文字列の配列でもない場合
- 引数のプロパティ
解説
対象のテーブルを与えられたテーブルと結合します。
結合時に同名のカラムを別々に扱いたい場合は、結合したいテーブルのcolumnAliasesでカラムに別名を付けてください。
別名を付けずに結合すると、同名のカラムが複数あった場合の結果は、DBごとに異なります。