sql server: consulta recursiva para agrupar produtos correspondentes
em uma tabela de banco de dados relacional denominada "Matches", representa uma correspondência entre dois produtos. O objetivo é criar uma tabela de "grupos" que captura essas correspondências em uma estrutura hierárquica. Especificamente, a coluna "group_id" deve armazenar o ID mínimo do produto entre aqueles que pertencem ao mesmo grupo. Uma consulta recursiva executa várias rodadas de operações nos mesmos dados. Aqui está uma solução que emprega uma expressão de tabela comum (CTE) para rastrear operações recursivas:
com CTE COMO ( Selecione distinto M1.product_id como group_id, M1.product_id Das partidas m1 Junho esquerda Matches M2 Em m1.product_id = m2.matching_product_id Onde m2.matching_product_id é nulo Union All Selecione C.group_id, M.matching_product_id De Cte c Junte -se a Matches m Em c.product_id = m.product_id ) Selecione * FROM ORDEM CTE POR GROUP_ID
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
selecione distinto M1.product_id como group_id, M1.product_id Das partidas m1 Junho esquerda Matches M2 Em m1.product_id = m2.matching_product_id Onde m2.matching_product_id é null
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
SELECT C.group_id, M.matching_product_id De Cte c Junte -se a Matches m Em c.product_id = m.product_id
Finalmente, podemos recuperar os resultados em ordem hierárquica, classificando o CTE pela coluna "group_id". A relação hierárquica é capturada pela coluna "group_id", garantindo que cada linha reflita um grupo de produtos distintos.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3