considerando che io ho questa tabella: (c
è un figlio di genitore p
)Visualizzazione delle righe di gerarchia ordinate nel server SQL?
c p
------
40 0
2 3
2 40
3 1
7 2
1 0
Dove (0
significa root) - Voglio che l'ordine di selezione per essere visualizzato come:
c b
------
1 0
3 1
2 3
40 0
2 40
7 2
Ecco perché abbiamo 2 radici (1,40) e 1 < 40.
Quindi iniziamo da 1
e quindi visualizziamo sotto di esso - tutti i suoi discendenti.
Quindi arriviamo a 40
. stessa logica ancora.
Domanda:
Come posso fare?
Sono riuscito a visualizzarlo in modo ricorsivo + trovando livello della gerarchia * (non so se è utile però) *
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