Query ricorsive con sql server 2005

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...

Nella stessa categoria

Commenti

Per inserire un commento, devi registrarti alla nostra community.

© 1998-2008 - AZ - Il blog di Andrea Zani

TagCloud
BLOG INFO
  • Post: 253
  • Commenti: 155
  • TrackBacks: 33
  • Feed blog e contenuti tecnici: RSS
  • Feed blog: RSS Atom OPML

MVP
CATEGORIE
I PIÙ LETTI DEL MESE
IN EVIDENZA