Vem är din chef?
I den här övningen använder vi datamängden från en IT-organisation som finns i tabellen employee. Tabellen innehåller fälten ID (den anställdes ID-nummer), Name (den anställdes namn) och Supervisor (handledarens ID-nummer).
IT-organisationen består av olika roller och nivåer.

Organisationen har en IT-direktör (ID=1, Heinz Griesser, Supervisor=0) med många underordnade anställda. Under IT-direktören finns IT-arkitekturchefen (ID=10, Andreas Sternig, Supervisor=1) med tre underordnade anställda. För Andreas Sternig gäller att Supervisor=1, vilket är ID för IT-direktören.
Först vill vi besvara frågan: Vilka är handledarna för varje anställd?
Vi löser det här problemet genom att rekursivt fråga mot datamängden.
Den här övningen är en del av kursen
Hierarkiska och rekursiva frågor i SQL Server
Övningsinstruktioner
- Skapa en CTE med namnet
employee_hierarchy. - Välj information om IT-direktören som det inledande steget i CTE:n genom att filtrera på hans
Supervisor-ID. - Utför en join med
employeeför att hämta chefens namn.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
-- Create the CTE employee_hierarchy
WITH ___ AS (
SELECT
ID,
NAME,
Supervisor
FROM employee
-- Start with the IT Director
WHERE ___ = ___
UNION ALL
SELECT
emp.ID,
emp.NAME,
emp.Supervisor
FROM employee emp
JOIN employee_hierarchy
ON emp.Supervisor = employee_hierarchy.ID)
SELECT
cte.Name as EmployeeName,
emp.Name as ManagerName
FROM employee_hierarchy as cte
JOIN employee as emp
-- Perform the JOIN on Supervisor and ID
ON cte.___ = emp.___;