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
Övningsinstruktioner
- Initialisera
PathtillID-värdet för handledaren (0) och ange startvillkoret för rekursionen. - Använd
UNIONför att kombinera ankarmedlemmen och definiera fälten i den rekursiva medlemmen (ID,Name,Supervisor). - Lägg till handledarens ID
SupervisoriPathför varje steg. - Välj ut ID:n för de anställda
Chris FeierabendochJasmin Mentili 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 = ___;