SQL Hierarchie Díl 4 – Úroveň hierarchie, cesta (Path) + skript

Poslední aktualizace:

V předešlých dílech tohoto miniseriálu o hierarchiích jsme zapomněli na jednu věc, která se může hodit a tou je způsob jak zmapovat v hierarchii hloubku jednotlivých členů neboli úroveň hierarchie. Stejně tak může být užitečné umět zobrazit Path – cestu jednotlivých členů hierarchie. Vycházet budu opět z prvního dílu a tabulky se zaměstnanci, kterou jsem si v rámci tohoto článku připravil.

Určení úrovně hierarchie a cesty (Path)

 

WITH nadrizeny AS
(
--vyber nadzizeneho
SELECT id_zamestnanec, id_nadrizeny, pozice, jmenoprijmeni,plat, 0 AS Hierarchy_Level,
CAST(jmenoprijmeni AS VARCHAR(1024)) AS Path_jmenoprijmeni,
CAST(id_zamestnanec AS VARCHAR(1024)) AS Path_id_zamestnanec
FROM Temp.dbo.zamestnanci
WHERE id_zamestnanec=15
UNION ALL
--rekurzivní dotaz na jeho podřízené
SELECT zam.id_zamestnanec, zam.id_nadrizeny, zam.pozice, zam.jmenoprijmeni, zam.plat, Hierarchy_Level+1,
CAST(nad.Path_jmenoprijmeni + ' | ' + CAST(zam.jmenoprijmeni AS VARCHAR(1024)) AS VARCHAR(1024)) AS Path_jmenoprijmeni,
CAST(nad.Path_id_zamestnanec + ' | ' + CAST(zam.id_zamestnanec AS VARCHAR(1024)) AS VARCHAR(1024)) AS Path_id_zamestnanec
FROM Temp.dbo.zamestnanci zam INNER JOIN nadrizeny nad
ON zam.id_nadrizeny = nad.id_zamestnanec
)
SELECT
id_zamestnanec,
jmenoprijmeni,
pozice,
plat,
Hierarchy_Level,
Path_jmenoprijmeni,
Path_id_zamestnanec
FROM nadrizeny;

Výsledek je na obrázku níže

  • Hierarchy_Level – zobrazení úrovně člena hierarchie. Ředitel má 0, manažer 1 a zaměstnanec 2. Pokud by měla hierarchie více členů, tak by bylo více levelů
  • Path_jmenoprijmeni – zobrazení cesty od nejvyššího člena k nejnižšímu. Zobrazujeme jméno a příjmení oddělení znakem “|”
  • Path_id_zamestnanec – podobně jao v předchozím případě je to cesta, ale zobrazujeme ID. To nám může lépe vyhovovat kvůli rychlosti dotazu a také s tímto formátem rychleji pracují některé reportovací nástroje – např. Power BI

Úroveň hierarchie - ukázka příkladu

SQL Hierarchie Díl 4 – Úroveň hierarchie, cesta (Path) + skript
5 (100%) 2 vote[s]

Honza Zedníček

Jmenuji se Honza Zedníček a nejčastěji se se mnou v civilu můžete potkat v kancelářích společnosti Kentico, s.r.o v Brně, kde působím jako BI Developer. Částečně pracuji také jako freelancer. Tuto práci dělám pro různé firmy již přes 5 let, ale Kentico je moje srdcovka ♡. Před tím jsem pracoval v několika bankách na pozicích finanční controller a manažer. Po práci se měním na vášnivého hráče tenisu, šachu a ochutnávače dobrých rumů. Mým velké štěstím, koníčkem a někdy stresorem se před 3 lety stal syn Kubíček. Svoje znalosti se snažím zapisovat na tento web - abych je nezapomněl (působením rumu ^^) a sloužily i někomu dalšímu. Přidejte si mě na LinkedIn nebo se subscribněte na RSS kanál

Rubrika: SQL tutorial Štítky:

About Honza Zedníček

Jmenuji se Honza Zedníček a nejčastěji se se mnou v civilu můžete potkat v kancelářích společnosti Kentico, s.r.o v Brně, kde působím jako BI Developer. Částečně pracuji také jako freelancer. Tuto práci dělám pro různé firmy již přes 5 let, ale Kentico je moje srdcovka ♡. Před tím jsem pracoval v několika bankách na pozicích finanční controller a manažer. Po práci se měním na vášnivého hráče tenisu, šachu a ochutnávače dobrých rumů. Mým velké štěstím, koníčkem a někdy stresorem se před 3 lety stal syn Kubíček. Svoje znalosti se snažím zapisovat na tento web - abych je nezapomněl (působením rumu ^^) a sloužily i někomu dalšímu. Přidejte si mě na LinkedIn nebo se subscribněte na RSS kanál

Napsat komentář

Vaše emailová adresa nebude zveřejněna.

Tato stránka používá Akismet k omezení spamu. Podívejte se, jak vaše data z komentářů zpracováváme..