ホームページ >データベース >mysql チュートリアル >SQL Server の再帰的自己結合はどのようにして階層データを取得できるのでしょうか?

SQL Server の再帰的自己結合はどのようにして階層データを取得できるのでしょうか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-15 12:15:47594ブラウズ

How Can Recursive Self-Joins in SQL Server Retrieve Hierarchical Data?

SQL Server 再帰的自己結合: 階層データのナビゲート

SQL Server の再帰的自己結合は、階層データ構造を横断するための強力な方法を提供します。これは、単一テーブル内の親子関係を扱う場合に特に役立ちます。

次の列を含む Categories テーブルを考えてみましょう:

  • Id
  • Name
  • ParentId

再帰的自己結合により、ネストされたカテゴリ レベルを含む、このテーブル内の階層関係を抽出できます。

例:

次のカテゴリ階層を想像してください:

<code>- Business Laptops
    - Gaming Laptops
        - Ultrabooks
            - Compact Ultrabooks</code>

再帰共通テーブル式 (CTE) を使用して「ビジネス ラップトップ」とその親カテゴリを取得するには、次のクエリを使用できます。

<code class="language-sql">;WITH CTE AS (
    SELECT id, name, name AS path, parent_id
    FROM Categories
    WHERE parent_id IS NULL
    UNION ALL
    SELECT t.id, t.name, CAST(cte.path + ',' + t.name AS VARCHAR(100)), t.parent_id
    FROM Categories t
    INNER JOIN CTE ON t.parent_id = CTE.id
)
SELECT id, name, path
FROM CTE
WHERE name = 'Business Laptops';</code>

このクエリの出力は次のようになります:

<code>id      name                path
1       Business Laptops      Business Laptops</code>

再帰的自己結合は、複雑な階層構造からデータを管理および取得し、複数のレベルにわたる関連情報にアクセスする効率的な方法を提供します。

以上がSQL Server の再帰的自己結合はどのようにして階層データを取得できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。