Maison >base de données >tutoriel mysql >Comment les requêtes SQL récursives peuvent-elles regrouper les correspondances de produits en fonction de l'ID de produit minimum ?

Comment les requêtes SQL récursives peuvent-elles regrouper les correspondances de produits en fonction de l'ID de produit minimum ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-05 14:33:45205parcourir

How Can Recursive SQL Queries Group Product Matches Based on Minimum Product ID?

Requêtes récursives dans SQL Server

Un analyste de données rencontre des difficultés à transformer une table contenant des correspondances de produits en une table de regroupement souhaitée. L'objectif est de dériver une nouvelle table, nommée « groupes », dans laquelle chaque groupe est représenté par l'ID de produit minimum de ses produits constitutifs.

Pour y parvenir, nous pouvons exploiter les capacités récursives de SQL. Voici une solution utilisant une expression de table commune (CTE) :

;WITH CTE
AS
(
    SELECT DISTINCT
        M1.Product_ID 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

Le CTE définit une requête récursive commençant par des lignes qui n'ont aucun produit correspondant. Par la suite, il identifie des produits correspondants supplémentaires et les regroupe en fonction de l'ID de produit minimum. La profondeur de récursion peut être contrôlée à l'aide de la clause OPTION(MAXRECURSION).

Cette solution regroupe efficacement les correspondances de produits en groupes selon les critères spécifiés.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn