Zacznij terazZacznij za darmo

Kto jest moim przełożonym?

W tym ćwiczeniu chcemy wyznaczyć ścieżkę od szefa na szczycie hierarchii do pracowników na jej najniższym poziomie. Aby to zrobić, musimy połączyć informacje uzyskane w każdym kroku w jedno pole. Można to osiągnąć, łącząc wartości ID za pomocą CAST() – z liczby na ciąg znaków. Przykładowo CAST(ID AS VARCHAR(MAX)) konwertuje ID z typu liczbowego na typ znakowy.

Zadanie polega na znalezieniu ścieżki dla pracowników Chris Feierabend z ID=18 oraz Jasmin Mentil z ID=16 – aż do samego szczytu organizacji. Wynik powinien mieć następującą postać: boss_first_level -> boss_second_level .... W zapytaniu należy wybrać identyfikatory pracowników, a nie ich imiona i nazwiska.

To ćwiczenie jest częścią kursu

Hierarchiczne i rekurencyjne zapytania w SQL Server

Zobacz kurs

Instrukcje do ćwiczenia

  • Zainicjuj Path wartością ID przełożonego (0) oraz warunkiem startowym rekurencji.
  • Użyj UNION, aby połączyć człon kotwiczący, i zdefiniuj pola członu rekurencyjnego (ID, Name, Supervisor).
  • Dodaj ID przełożonego (Supervisor) do Path w każdym kroku rekurencji.
  • Wybierz identyfikatory pracowników Chris Feierabend i Jasmin Mentil w CTE.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

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 = ___;
Edytuj i uruchom kod