Query ricorsive con sql server 2005

Andrea Zani

di , 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
Query ricorsive con sql server 2005
| Condividi su: Twitter, Facebook, LinkedIn, Google+

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