viene utilizzata per prelevare i dati di una struttura gerarchica.
Immagina di avere una tabella con varie righe, contenenti due campi: id_nodo e id_padre. Il campo id_padre punta al nodo padre del nodo corrente. Praticamente la tabella contiene i dati di un albero.
Ad esempio
codice:
id_nodo id_padre descrizione
0 null root
1 0 0.1
2 0 0.2
3 1 0.1.1
4 3 0.1.1.1
5 3 0.1.1.2
rappresenta l'albero
codice:
0
/ \
1 2
/
3
/ \
4 5
la query
select id_nodo, level
from tabella
start with id_nodo=0
conenct by prior id_nodo = id_parent
ti restituisce tutta la discendenza del nodo 0, ovvero nell'ordine,
codice:
id_nodo level
0 0
1 1
3 2
4 3
5 3
2 1
level (parola chiave) ti restituisce la 'profondità' del nodo rispetto a quello di partenza.
se inverti nella clausola connect by prior puoi risalire invece la gerarchia. Ad esempio se avessi scritto
select id_nodo, level
from tabella
start with id_nodo=5
conenct by prior id_parent = id_nodo
il risultato sarebbe
codice:
id_nodo level
5 0
3 1
1 2
0 3
ciao