Sei in: Home : Competenze : SQL : Microsoft SQL

Per selezionare un ramo di un albero rappresentato da una tabella con il riferimento al padre

Caso: Una tabella referenzia se stessa, dunque descrive alberi. Devo trovare la radice di un albero in cui un qualsiasi nodo abbia una certa proprietà...

es.

RADICE A
                - NODO 1 Pippo
                               - NODO 1.1 Ludovico
                                               - NODO 1.1.1 Beppe
                - NODO 2 Pluto
                - NODO 3 Paperone
RADICE B
                - NODO 4 Betty
                - NODO 5 Uguberto

Voglio trovare il ramo in cui un qualsiasi nodo abbia la denominazione Ludovico e dunque mi aspetto di trovare

RADICE A
                - NODO 1 Pippo
                               - NODO 1.1 Ludovico
                                               - NODO 1.1.1 Beppe
                - NODO 2 Pluto
                - NODO 3 Paperone

SQL consente definizione di query ricorsive

with myTree (UID, ParentUID)
as
(
select UID, ParentUID from MiaTabella where denominazioen like 'Ludovico'
UNION ALL
select MiaTabella.UID, MiaTabella.ParentUID from MiaTabella inner join myTree on myTree.UID = MiaTabella.ParentUID
)
select MiaTabella.UID, MiaTabella.ParentUID from MiaTabella inner join myTree on myTree.UID = MiaTabella.UID