Query ricorsive con sql server 2005

Andrea Zani

di Andrea Zani, in Sql, sabato 5 maggio 2007 ore 17.36

Archiviato in: ,

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

Per inserire un commento, devi avere un account.

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



Segnala su: Facebook MSDN Social Twitter Segnalo Wikio Diggita Technorati Stumbleupon Google Yahoo FriendFeed Delicious Furl

Nella stessa categoria
    Nessuna risorsa collegata
    I più letti del mese
    TagCloud
    BLOG INFO
    • 295 post, 201 commenti, 36 trackback
    • Feed blog e contenuti tecnici: RSS
    • Feed blog: RSS Atom
    IN EVIDENZA