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:
| id | id_padre | nome |
| 1 | 0 | a |
| 2 | 1 | aa |
| 3 | 1 | ab |
| 4 | 2 | aaa |
| 5 | 2 | aab |
| 6 | 4 | aaaa |
| 7 | 3 | aba |
| 8 | 3 | abb |
| 9 | 7 | abaa |
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 treeMolto più semplice e veloce che la costruzione di una funzione apposita...
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.




Stampa
Download

10annidi.ASPItalia.com: iscriviti alla competizione e vinci fantastici premi ogni mese!
