Bắt đầu ngayBắt đầu miễn phí

Tôi có cấp trên nào?

Trong bài tập này, bạn sẽ lấy đường đi từ sếp ở đỉnh hệ thống phân cấp xuống các nhân viên ở đáy. Để làm được điều này, bạn cần gộp thông tin thu được ở mỗi bước vào một trường. Bạn có thể làm điều đó bằng cách nối các ID và dùng CAST() để chuyển từ số sang chuỗi. Ví dụ: CAST(ID AS VARCHAR(MAX)) để chuyển ID kiểu số sang kiểu ký tự.

Nhiệm vụ là tìm đường đi cho nhân viên Chris Feierabend với ID=18Jasmin Mentil với ID=16 lên đến đỉnh của tổ chức. Đầu ra nên có dạng: boss_first_level -> boss_second_level .... Hãy chọn các ID của nhân viên chứ không phải tên của họ.

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

Xem khóa học

Hướng dẫn bài tập

  • Khởi tạo Path bằng ID của cấp trên (0) và điều kiện bắt đầu của đệ quy.
  • Dùng UNION để kết hợp anchor member và định nghĩa các trường của recursive member (ID, Name, Supervisor).
  • Ở mỗi bước, thêm ID của cấp trên Supervisor vào Path.
  • Chọn các ID của nhân viên Chris FeierabendJasmin Mentil trong CTE.

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.

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 = ___;
Chỉnh sửa và Chạy Mã