ホームページ > データベース > mysql チュートリアル > 再帰クエリを使用して SQL Server で一致した製品をグループ化する方法

再帰クエリを使用して SQL Server で一致した製品をグループ化する方法

DDD
リリース: 2025-01-05 13:19:41
オリジナル
327 人が閲覧しました

How to Group Matched Products in SQL Server Using Recursive Queries?

SQL Server: 一致した製品をグループ化するための再帰クエリ

「matches」という名前のリレーショナル データベース テーブルでは、各レコードは 2 つの間の一致を表します。製品。目標は、これらの一致を階層構造でキャプチャする「グループ」テーブルを作成することです。具体的には、「group_ID」列には、同じグループに属する製品 ID の最小値を格納する必要があります。

これを実現するには、SQL の再帰クエリの力を活用できます。再帰クエリは、同じデータに対して複数回の操作を実行します。ここでは、共通テーブル式 (CTE) を使用して再帰操作を追跡するソリューションを示します。

WITH CTE
AS
(
    SELECT DISTINCT
        M1.Product_ID AS Group_ID,
        M1.Product_ID
    FROM matches M1
        LEFT JOIN matches M2
            ON M1.Product_Id = M2.matching_Product_Id
    WHERE M2.matching_Product_Id IS NULL
    UNION ALL
    SELECT
        C.Group_ID,
        M.matching_Product_Id
    FROM CTE C
        JOIN matches M
            ON C.Product_ID = M.Product_ID
)
SELECT * FROM CTE ORDER BY Group_ID
ログイン後にコピー

再帰の基本的なケースは、製品に一致がない場合であり、この場合、製品は独自のグループを形成します。これは、CTE の最初の部分でキャプチャされます。

    SELECT DISTINCT
        M1.Product_ID AS Group_ID,
        M1.Product_ID
    FROM matches M1
        LEFT JOIN matches M2
            ON M1.Product_Id = M2.matching_Product_Id
    WHERE M2.matching_Product_Id IS NULL
ログイン後にコピー

CTE の再帰部分では、各グループに一致するすべての製品が検索されます。これらの一致する製品を繰り返しグループに追加します。

    SELECT
        C.Group_ID,
        M.matching_Product_Id
    FROM CTE C
        JOIN matches M
            ON C.Product_ID = M.Product_ID
ログイン後にコピー

最後に、CTE を「Group_ID」列で並べ替えることで、結果を階層順に取得できます。

SELECT * FROM CTE ORDER BY Group_ID
ログイン後にコピー

これ再帰クエリは、「グループ」テーブル内の製品の目的のグループ化を効果的に生成します。階層関係は「group_ID」列によって取得され、各行が個別の製品グループを確実に反映します。

SQL Server の再帰機能を活用することで、複雑な階層パターンを効率的に抽出し、関連データを複雑にグループ化できます。データベース構造。

以上が再帰クエリを使用して SQL Server で一致した製品をグループ化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート