Query ricorsive con sql server 2005

di Andrea Zani, in Sql,

Me lo segno.

Stare troppo su Sql server nella versione 2000 ti fa perdere di vista le novità del più potente 2005. Eccomi dunque a segnarmi una memo sul modo più veloce e prestazionale per eseguire una query ricorsiva sul mio blog.

A che serve una query ricorsiva? La risposta più semplice è nel caso della struttura ad albero memorizzato in una tabella il poter avere tutti i figli di un determinato ramo. Ecco il caso di una tabella:

idid_padrenome
10a
21aa
31ab
42aaa
52aab
64aaaa
73aba
83abb
97abaa

L'albero è semplice, il padre è "a", e i figli seguono l'ordine alfabetico. Ora, se volessi sapere tutti i figli e nipoti di aa, con sql server 2005, posso scrivere:

with tree(id,id_padre,nome) as
(
select id,id_padre,nome from albero where id=2 -- id del padre
union all
select a.id,a.id_padre,a.nome from albero a
inner join tree t on t.id=a.id_padre
)
select id,id_padre,nome from tree

Molto più semplice e veloce che la costruzione di una funzione apposita...

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Nella stessa categoria
I più letti del mese