Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

CTE, aby uzyskać wszystkie dzieci (potomków) rodzica

To powinno wystarczyć:

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

A oto zaktualizowany SQL Fiddle.

Sprawdź również ten link, aby uzyskać pomoc dotyczącą CTE... Zdecydowanie warto o nich wiedzieć:

Mam nadzieję, że to załatwi sprawę!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak poprawić wydajność filtrowania daty i godziny w programie SQL Server?

  2. Rozwiązania dotyczące bezbłędnego odczytywania pliku dziennika transakcji programu SQL Server

  3. Jak zainstalować localdb osobno?

  4. Zmiana sortowania SQL Server na bez uwzględniania wielkości liter z rozróżniania wielkości liter?

  5. SQL:klauzula IF w klauzuli WHERE