La situazione:
In una tabella ci sono i seguenti campi:
- father
- code
Quindi data la struttura seguente:
- ARTICOLO VENDITA
- Sub Articolo 1
- Sub Articolo 2
- Sub Articolo 2-1
- Sub Articolo 2-2
- Sub Articolo 3
- Sub Articolo 3-1
- Sub Articolo 3-1-1
father | code |
---|---|
ARTICOLO VENDITA | Sub Articolo 1 |
ARTICOLO VENDITA | Sub Articolo 2 |
ARTICOLO VENDITA | Sub Articolo 3 |
Sub Articolo 2 | Sub Articolo 2-1 |
Sub Articolo 2 | Sub Articolo 2-2 |
Sub Articolo 3 | Sub Articolo 3-1 |
Sub Articolo 3-1 | Sub Articolo 3-1-1 |
Ora, data tale struttura, andiamo a costruire una query un pò particolare che possa dare come risultato una tabella come la precedente andando a selezionare solo il codice di vendita principale "ARTICOLO VENDITA".
Di seguito la query:
With BOM (Parent,Child,Level) As
(
Select T0.Father Parent,T0.Code Child, 0 Level
From TABLE T0
Where T0.Father = 'ARTICOLO VENDITA'
Union All
Select T1.Father,T1.Code,Level+1
From TABLE T1
Inner join BOM T2 on T1.Father=T2.Child
)
Select T4.*
From BOM T4
Option (MAXRECURSION 10)
In questo modo, siamo in grado di estrarre tutti i dati della struttura ad albero, visualizzati in tabella , interrogando il DB solo con il nome del "ARTICOLO VENDITA".
Nessun commento:
Posta un commento
Grazie per aver scritto.
Il tuo commento sarà pubblica appena approvato dall'amministratore del blog.