Kom igångKom igång gratis

Vilken chef har jag?

I den här övningen vill vi hitta sökvägen från chefen högst upp i hierarkin till de anställda längst ned. För att göra det behöver vi kombinera informationen från varje steg till ett enda fält. Det gör du genom att slå ihop ID-värdena med hjälp av CAST() för att konvertera från tal till sträng. Ett exempel är CAST(ID AS VARCHAR(MAX)), som konverterar ID av typen tal till typen char.

Uppgiften är nu att hitta sökvägen för de anställda Chris Feierabend med ID=18 och Jasmin Mentil med ID=16, hela vägen upp till toppen av organisationen. Utdatan ska se ut så här: boss_first_level -> boss_second_level .... Det är de anställdas ID:n, inte deras namn, som ska väljas ut.

Den här övningen är en del av kursen

Hierarkiska och rekursiva frågor i SQL Server

Visa kurs

Övningsinstruktioner

  • Initialisera Path till ID-värdet för handledaren (0) och ange startvillkoret för rekursionen.
  • Använd UNION för att kombinera ankarmedlemmen och definiera fälten i den rekursiva medlemmen (ID, Name, Supervisor).
  • Lägg till handledarens ID Supervisor i Path för varje steg.
  • Välj ut ID:n för de anställda Chris Feierabend och Jasmin Mentil i CTE:n.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

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 = ___;
Redigera och kör kod