PDA

Visualizza la versione completa : [Oracle SQL] CONNECT BY ... PRIOR ... START WITH


DeBe99
20-05-2003, 11:22
Ciao a tutti, qualcuno sa come funziona la sintassi di queste istruzioni SQL per Oracle?
:metallica :bhò:

DeBe99
20-05-2003, 14:28
http://forum.html.it/forum/faccine/185.gif :stordita: http://forum.html.it/forum/faccine/185.gif

:dhò:

caimano73
20-05-2003, 18:29
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



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


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,


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



id_nodo level
5 0
3 1
1 2
0 3



ciao

:ciauz:

DeBe99
21-05-2003, 10:14
Perfetto, grazie

:ciauz:

Loading