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

Lấy số thế hệ?

Trong bài tập này, chúng ta sẽ xem một cây gia phả ngẫu nhiên. Bộ dữ liệu family gồm ba cột: ID, nameParentID. Nhiệm vụ của bạn là tính số lượng thế hệ. Bạn sẽ làm điều này bằng cách đếm tất cả các thế hệ bắt đầu từ người có ParentID = 101.

Với nhiệm vụ này, bạn cần tính LEVEL của đệ quy, đại diện cho cấp hiện tại trong hệ phân cấp thế hệ. Sau đó, bạn cần đếm số LEVEL bằng cách dùng COUNT(). Hãy nhớ rằng số cấp độ chính là số thế hệ; ví dụ, đếm được 100 cấp độ nghĩa là bạn đã tìm ra 100 thế 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 điểm bắt đầu đệ quy bằng cách đặt ParentID thành 101.
  • Đặt LEVEL bằng bước đệ quy hiện tại.
  • Join thành viên anchor vào CTE trên ID của cha và con.
  • Dùng COUNT() để đếm số thế hệ.

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 children AS (
    SELECT 
  		ID, 
  		Name,
  		ParentID,
  		0 as LEVEL
  	FROM family 
  	-- Set the targeted parent as recursion start
  	WHERE ___ = ___
    UNION ALL
    SELECT 
  		child.ID,
  		child.NAME,
  		child.ParentID,
  		-- Increment LEVEL by 1 each step
  		___ + ___
  	FROM family child
  		INNER JOIN children 
		-- Join the anchor query with the CTE   
  		ON child.___ = children.___)
    
SELECT
	-- Count the number of generations
	___(___) as Generations
FROM children
OPTION(MAXRECURSION 300);
Chỉnh sửa và Chạy Mã