Ai là quản lý của bạn?
Trong bài tập này, bạn sẽ sử dụng bộ dữ liệu của một tổ chức IT được cung cấp trong bảng employee. Bảng này có các trường ID (mã nhân viên), Name (tên nhân viên) và Supervisor (mã người quản lý).
Tổ chức IT gồm nhiều vai trò và cấp bậc khác nhau.

Tổ chức có một giám đốc IT (ID=1, Heinz Griesser, Supervisor=0) với nhiều nhân viên cấp dưới. Dưới giám đốc IT là quản lý kiến trúc IT (ID=10, Andreas Sternig, Supervisor=1) với ba nhân viên cấp dưới. Với Andreas Sternig, Supervisor=1 chính là ID của giám đốc IT.
Đầu tiên, chúng ta muốn trả lời câu hỏi: Người quản lý (supervisor) của mỗi nhân viên là ai?
Chúng ta sẽ giải quyết vấn đề này bằng cách truy vấn đệ quy trên bộ dữ liệu.
Bài tập này là một phần của khóa học
Truy vấn phân cấp và đệ quy trong SQL Server
Hướng dẫn bài tập
- Tạo một CTE tên là
employee_hierarchy. - Chọn thông tin của giám đốc IT làm bước khởi đầu của CTE bằng cách lọc theo ID
Supervisorcủa ông ấy. - Thực hiện join với
employeeđể lấy tên của người quản lý.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
-- 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.___;