Rekursive Abfrage in SQL Server
Um passende Produkte gruppiert nach ihrer minimalen Produkt-ID abzurufen, kann eine rekursive Abfrage verwendet werden. Diese Abfrage durchläuft eine Tabelle, durchläuft die Product_ID-Beziehungen und sammelt die Ergebnisse in einer separaten Gruppentabelle. Die rekursive Struktur stellt sicher, dass alle Übereinstimmungen identifiziert und in die Ergebnisse einbezogen werden.
Lösung:
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
In dieser Abfrage ist der CTE eine rekursive Definition, die identifiziert die minimale Product_ID für jede Gruppe. Die Abfrage beginnt mit der Auswahl der Product_IDs, die keine passende Product_Id haben, und erstellt die ersten Gruppen. Im rekursiven Schritt verknüpft die Abfrage den CTE mit der Übereinstimmungstabelle, um übereinstimmende Product_IDs zu identifizieren und sie den Gruppen hinzuzufügen. Dieser Vorgang wird fortgesetzt, bis alle Übereinstimmungen verarbeitet sind.
Das Endergebnis ist eine Tabelle mit dem Namen „Gruppen“, die die MIN-Produkt-ID für jede Gruppe sowie alle Produkt-IDs enthält, die zu dieser Gruppe gehören. Diese Struktur ermöglicht effiziente Abfragen zu Produktbeziehungen und -gruppierungen.
Hinweis:
Um die Rekursionstiefe zu steuern, verwenden Sie die Klausel OPTION(MAXRECURSION n) und ersetzen Sie n durch die gewünschte maximale Rekursionsstufe.
Beispiel: SQL Fiddle Demo
https://www.sqlfiddle.com/#!18/c772e/11
Das obige ist der detaillierte Inhalt vonWie kann eine rekursive SQL-Abfragegruppe Produkte anhand der minimalen Produkt-ID abgleichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!