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

CTE for at få alle børn (efterkommere) af en forælder

Dette burde gøre det:

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

Og her er den opdaterede SQL Fiddle.

Tjek også dette link for at få hjælp til CTE'er... De er bestemt gode at vide:

Håber dette gør det trick!



  1. Hvordan bruger man en fremmednøgle i sqlite?

  2. Påvirker fremmednøglebegrænsninger forespørgselstransformationer i Oracle?

  3. Sådan indsætter du mere end 1000 værdier i en Oracle IN-klausul

  4. Sådan identificerer du MySQL-ydelsesproblemer med langsomme forespørgsler