Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

CTE per ottenere tutti i figli (discendenti) di un genitore

Questo dovrebbe farlo:

WITH MyTest as
(
  SELECT P.ProductID, P.ParentID, CAST(P.ProductID AS VarChar(Max)) as Level
  FROM Products P
  WHERE P.ParentID = 0

  UNION ALL

  SELECT P1.ProductID, P1.ParentID, CAST(P1.ProductID AS VarChar(Max)) + ', ' + M.Level
  FROM Products P1  
  INNER JOIN MyTest M
  ON M.ProductID = P1.ParentID
 )
SELECT * From MyTest

Ed ecco l'aggiornamento SQL Fiddle.

Inoltre, controlla questo link per assistenza con i CTE... Sono sicuramente utili a sapersi:

Spero che questo risolva!