ÎncepețiÎncepe gratuit

Ce supervizor am?

În acest exercițiu, vrem să obținem calea de la șeful aflat în vârful ierarhiei până la angajații de la baza acesteia. Pentru aceasta, trebuie să combinăm informațiile obținute la fiecare pas într-un singur câmp. Poți face asta combinând ID-urile cu ajutorul CAST(), care convertește un număr în șir de caractere. De exemplu, CAST(ID AS VARCHAR(MAX)) convertește ID din tip numeric în tip char.

Sarcina ta este să găsești calea pentru angajații Chris Feierabend cu ID=18 și Jasmin Mentil cu ID=16, până în vârful organizației. Rezultatul ar trebui să arate astfel: boss_first_level -> boss_second_level .... În rezultat vor apărea ID-urile angajaților, nu numele lor.

Acest exercițiu face parte din cursul

Interogări ierarhice și recursive în SQL Server

Vezi cursul

Instrucțiuni pentru exercițiu

  • Inițializează Path cu ID-ul supervizorului (0) și condiția de start a recursiei.
  • Aplică UNION între membrul ancoră și definește câmpurile membrului recursiv (ID, Name, Supervisor).
  • Adaugă ID-ul supervizorului Supervisor la Path la fiecare pas.
  • Selectează ID-urile angajaților Chris Feierabend și Jasmin Mentil în CTE.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

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 = ___;
Editează și rulează codul