НачатьНачать бесплатно

Кто мой руководитель?

В этом упражнении нужно получить путь от руководителя на вершине иерархии до сотрудников на её нижних уровнях. Для этого необходимо объединить информацию, полученную на каждом шаге, в одно поле. Сделать это можно, соединив значения ID с помощью CAST() — для преобразования числа в строку. Например: CAST(ID AS VARCHAR(MAX)) преобразует ID числового типа в символьный.

Задача — найти путь для сотрудников Chris Feierabend с ID=18 и Jasmin Mentil с ID=16 вплоть до вершины организации. Результат должен выглядеть так: boss_first_level -> boss_second_level .... В выборке должны быть идентификаторы сотрудников, а не их имена.

Это упражнение является частью курса

Иерархические и рекурсивные запросы в SQL Server

Посмотреть курс

Инструкции к упражнению

  • Инициализируйте Path, используя ID руководителя (0) и начальное условие рекурсии.
  • Объедините якорный элемент с помощью UNION и определите поля рекурсивного элемента (ID, Name, Supervisor).
  • На каждом шаге добавляйте ID руководителя Supervisor к значению Path.
  • Выберите в CTE идентификаторы сотрудников 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 = ___;
Редактировать и запускать код