ПочатиПочніть безкоштовно

Хто мій керівник?

У цій вправі потрібно отримати шлях від керівника на вершині ієрархії до співробітників унизу. Для цього потрібно на кожному кроці поєднати отриману інформацію в одному полі. Це можна зробити, об'єднуючи ID за допомогою CAST() для перетворення числа на рядок. Наприклад, CAST(ID AS VARCHAR(MAX)) перетворює ID числового типу на символьний.

Завдання: знайти шлях для співробітників Chris Feierabend з ID=18 і Jasmin Mentil з ID=16 аж до вершини організації. Вивід має виглядати так: boss_first_level -> boss_second_level .... Потрібно вибирати ID співробітників, а не їхні імена.

Ця вправа є частиною курсу

Ієрархічні та рекурсивні запити в SQL Server

Переглянути курс

Інструкції до вправи

  • Ініціалізуйте Path як ID керівника (0) і задайте початкову умову рекурсії.
  • Виконайте UNION з опорним членом і визначте поля рекурсивного члена (ID, Name, Supervisor).
  • На кожному кроці додавайте ID керівника Supervisor до Path.
  • У CTE виберіть ID співробітників Chris Feierabend і Jasmin Mentil.

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

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 = ___;
Редагувати та запускати код