Kdo je můj nadřízený?
V tomto cvičení chceme zjistit cestu od šéfa na vrcholu hierarchie až k zaměstnancům na jejím konci. K tomu musíme informace získané v každém kroku sloučit do jednoho pole. Dosáhneme toho kombinací ID pomocí CAST() — převodem čísla na řetězec. Příkladem je CAST(ID AS VARCHAR(MAX)), které převede ID číselného typu na typ char.
Úkolem je nyní najít cestu pro zaměstnance Chris Feierabend s ID=18 a Jasmin Mentil s ID=16 až na vrchol organizace. Výstup by měl vypadat takto: boss_first_level -> boss_second_level .... Místo jmen zaměstnanců se mají vybrat jejich ID.
Toto cvičení je součástí kurzu
Hierarchical and Recursive Queries in SQL Server
Pokyny k cvičení
- Inicializuj
PathnaIDnadřízeného (0) a nastav počáteční podmínku rekurze. - Spoj kotevní člen pomocí
UNIONa definuj pole rekurzivního členu (ID,Name,Supervisor). - V každém kroku přidej do
PathID nadřízenéhoSupervisor. - V CTE vyber ID zaměstnanců
Chris FeierabendaJasmin Mentil.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
WITH employee_Hierarchy AS (
SELECT
ID,
NAME,
Supervisor,
-- Initialize the Path with CAST
___('___' AS VARCHAR(MAX)) as Path
FROM employee
WHERE Supervisor = 0
-- UNION the anchor query
___ ALL
-- Select the recursive query fields
SELECT
emp.___,
emp.___,
emp.___,
-- Add the supervisor in each step. CAST the supervisor.
Path + '->' + ___(emp.___ AS VARCHAR(MAX))
FROM employee emp
INNER JOIN employee_Hierarchy
ON emp.Supervisor = employee_Hierarchy.ID
)
SELECT Path
FROM employee_Hierarchy
-- Select the employees Chris Feierabend and Jasmin Mentil
WHERE ___ = 16 OR ID = ___;