Attualmente sto eseguendo una query CTE per creare ricorsivamente una gerarchia di dipendenti da una tabella dei dipendenti simile a ciò che dimostrano gli esempi più ricorsivi. Dove sono bloccato è che sto cercando di interrogare un singolo dipendente e recuperare la gerarchia sopra di lui. Di seguito è riportato un esempio della tabella che sto cercando di lavorare con:Ricorsione SQL CTE: restituzione dei record principali
Employees
===========================================================================
EmployeeID MgrID Name
1 null Joe
2 1 John
3 2 Rob
4 2 Eric
che segue è la SQL che mi permette di visualizzare la gerarchia dall'alto verso il basso:
with employeeMaster as (
select p.EmployeeID, p.MgrID, p.Name
from Employees p
where p.MgrID is null
union all
select c.EmployeeID, c.MgrID, c.Name
from employeeMaster cte inner join Employees c on c.MgrID = cte.EmployeeID
)
select * from employeeMaster
Dove sono bloccato è che non riesco a capire come interrogare il dipendente di livello più basso, Rob o Eric, e restituire la gerarchia sopra di lui da Joe> John> Eric. Sembra che dovrebbe essere facile ma non riesco a riconoscerlo per la vita di me.
Utilizzando l'esempio di tabella nel mio post, vorrei richiedere per Eric e restituire un recordset con tre record che mostrano il suo record e le due persone sopra di lui. L'obiettivo finale è la possibilità di interrogare qualsiasi dipendente e vedere la catena di comando di quel dipendente fino in cima. – Tehrab
Ho modificato per darti Eric e i suoi manager. –
Sempre le cose semplici. Contrassegnato come risposta. – Tehrab