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

Хто ваш(і) керівник(и)?

У цій вправі ми використаємо набір даних ІТ-організації, який наведено в таблиці employee. У таблиці є поля ID (ідентифікатор працівника), Name (ім'я працівника) та Supervisor (ідентифікатор керівника).

ІТ-організація складається з різних ролей і рівнів.

A section of the entire hierarchy

В організації є один ІТ-директор (ID=1, Heinz Griesser, Supervisor=0) із багатьма підлеглими. Під ІТ-директором є менеджер з ІТ-архітектури (ID=10, Andreas Sternig, Supervisor=1) із трьома підлеглими. Для Andreas Sternig Supervisor=1, тобто це ID ІТ-директора.

Спочатку хочемо відповісти на запитання: Хто є керівником для кожного працівника?

Ми розв'яжемо цю задачу, рекурсивно виконуючи запити до набору даних.

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

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

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

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

  • Створіть CTE з назвою employee_hierarchy.
  • Виберіть дані про ІТ-директора як початковий крок CTE, відфільтрувавши за його Supervisor ID.
  • Виконайте з'єднання з employee, щоб отримати ім'я керівника.

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

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

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