Sto attraversando un momento difficile con questo. Ho visto alcuni esempi su come ottenere tutti i record figlio da una tabella autoreferenziale fornita a un genitore e persino come ottenere i genitori dei record figli.Seleziona tutto il livello di gerarchia e sotto SQL Server
Quello che sto cercando di fare è restituire un record e tutti i record figlio dati l'ID.
Per mettere questo in un contesto - Ho una gerarchia aziendale. Dove:
#Role Level#
--------------------
Corporate 0
Region 1
District 2
Rep 3
cosa ho bisogno è una procedura che (1) capisce che livello il record è e (2) recupera che i record di registrazione e di tutti i bambini.
L'idea di essere una Regione può vedere tutti i distretti e rappresentanti in un distretto, i Distretti possono vedere i loro rappresentanti. I rappresentanti possono solo vedere se stessi.
Ho tavolo:
ID ParentId Name
-------------------------------------------------------
1 Null Corporate HQ
2 1 South Region
3 1 North Region
4 1 East Region
5 1 West Region
6 3 Chicago District
7 3 Milwaukee District
8 3 Minneapolis District
9 6 Gold Coast Dealer
10 6 Blue Island Dealer
Come faccio a fare questo:
CREATE PROCEDURE GetPositions
@id int
AS
BEGIN
--What is the most efficient way to do this--
END
GO
Ad esempio, il risultato atteso per @id = 3, vorrei tornare:
3, 6, 7, 8, 9, 10
Apprezzerei qualsiasi aiuto o idee su questo.
Quale sarebbe il risultato previsto? –
Ho aggiornato la domanda per mostrare il risultato previsto. – JDBennett