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
    Nessuna risorsa collegata

    Commenti

    Aggiungi un nuovo commento »»»
    Per inserire un commento, devi registrarti alla nostra community.

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

    TagCloud
    BLOG INFO
    • Post: 268
    • Commenti: 172
    • TrackBacks: 35
    • Feed blog e contenuti tecnici: RSS
    • Feed blog: RSS Atom OPML

    MVP
    CATEGORIE
    I PIÙ LETTI DEL MESE
    IN EVIDENZA