Začněte nyníZačněte zdarma

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

Zobrazit kurz

Pokyny k cvičení

  • Inicializuj Path na ID nadřízeného (0) a nastav počáteční podmínku rekurze.
  • Spoj kotevní člen pomocí UNION a definuj pole rekurzivního členu (ID, Name, Supervisor).
  • V každém kroku přidej do Path ID nadřízeného Supervisor.
  • V CTE vyber ID zaměstnanců Chris Feierabend a Jasmin 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 = ___;
Upravit a spustit kód