Documentdb-sql-joins
提供:Dev Guides
DocumentDB SQL-結合
リレーショナルデータベースでは、Joins句を使用してデータベース内の2つ以上のテーブルのレコードを結合します。正規化されたスキーマを設計するときは、テーブル間で結合する必要が非常に重要です。 DocumentDBはスキーマフリードキュメントの非正規化データモデルを処理するため、DocumentDB SQLのJOINは「自己結合」と論理的に同等です。
前の例のように3つのドキュメントを考えてみましょう。
以下は AndersenFamily ドキュメントです。
以下は SmithFamily ドキュメントです。
以下は WakefieldFamily ドキュメントです。
JOIN句がどのように機能するかを理解するために例を見てみましょう。
ルートを子サブドキュメントに結合するクエリを次に示します。
上記のクエリを実行すると、次の出力が生成されます。
上記の例では、結合はドキュメントルートと子サブルートの間で行われ、2つのJSONオブジェクト間のクロスプロダクトを作成します。 以下は注意すべき特定のポイントです-
- FROM句では、JOIN句は反復子です。
- 最初の2つのドキュメントWakefieldFamilyとSmithFamilyには2つの子が含まれているため、結果セットには、各子に対して個別のオブジェクトを生成するクロス積も含まれています。
- 3番目のドキュメントAndersenFamilyには1つの子しか含まれていないため、このドキュメントに対応するオブジェクトは1つだけです。
同じ例を見てみましょう。ただし、今回はJOIN句の理解を深めるために、子名も取得します。
ルートを子サブドキュメントに結合するクエリを次に示します。
上記のクエリを実行すると、次の出力が生成されます。