Zakładając mam tej tabeli: (c
jest dzieckiem rodziców p
)Wyświetlanie uporządkowanych wierszy hierarchii na serwerze SQL?
c p
------
40 0
2 3
2 40
3 1
7 2
1 0
Gdzie (0
oznacza korzeń) - Chcę kolejności wybierz, aby być wyświetlane jako:
c b
------
1 0
3 1
2 3
40 0
2 40
7 2
to Ponieważ mamy 2 korzenie (1,40) i 1 < 40.
Tak więc zaczynamy od 1
, a następnie wyświetlamy poniżej - wszystkie to potomkowie.
Następnie przejdziemy do 40
. ta sama logika ponownie.
Pytanie:
Jak mogę to zrobić?
jakie udało się wyświetlić to rekurencyjnie + znalezienie poziomie hierarchii * (nie wiem, czy to pomaga choć) *
WITH cte(c, p) AS (
SELECT 40, 0 UNION ALL
SELECT 2,3 UNION ALL
SELECT 2,40 UNION ALL
SELECT 3,1 UNION ALL
SELECT 7,2 UNION ALL
SELECT 1,0
) , cte2 AS(
SELECT c,
p,
PLevel = 1
FROM cte
WHERE p = 0
UNION ALL
SELECT cte.c,
cte.p,
PLevel = cte2.PLevel + 1
FROM cte
INNER JOIN cte2
ON cte2.c = cte.p
)
SELECT *
FROM cte2