Qui tắc duyệt cây đề cập ở đây là theo chiều sâu, duyệt từ trái sang phải, thứ tự duyệt được thể hiện bằng các chữ số bên trong các node ở hình 1. Bảng Tree lưu trữ thông tin của cây đa cấp có cấu trúc như sau: Column Name NodeID NodeName ParentID WoodenLeg Data Type Int varchar Int varchar Size 20 100 Allow Null No No Yes Yes Description Khóa chính của bảng Tree Tên node Mã của node cha gần nhất Cột giả hỗ trợ khi sắp xếp dữ liệu . | Duyệt cây đa cấp trên MS SQL Server Qui tắc duyệt cây đề cập ở đây là theo chiều sâu duyệt từ trái sang phải thứ tự duyệt được thể hiện bằng các chữ số bên trong các node ở hình 1. Bảng Tree lưu trữ thông tin của cây đa cấp có cấu trúc như sau Column Name Data Type Size Allow Null Description NodeID Int No Khóa chính của bảng Tree NodeName varchar 20 No Tên node ParentID Int Yes Mã của node cha gần nhất WoodenLeg varchar 100 Yes Cột giả hỗ trợ khi sắp xếp dữ liệu Scrip tạo bảng Tree như sau Create Table Tree NodeID int Primary Key NodeName varchar 20 Not Null ParentID int Null WoodenLeg varchar 100 Null Dữ liệu trong bảng Tree mô tả cây đa cấp ở hình 1 được thể hiện ở hình 2. Qui tắc tạo dữ liệu như sau NodeName NodeName ParentID WoodenLeg 1 Root Node Null 1 2 Node 1 1 12 3 Node 2 1 13 4 Node 3 1 14 5 Node 4 1 15 6 Node A 2 126 7 Node B 2 127 8 Node C 3 138 9 Node D 3 139 10 Node E 3 1310 11 Node F 5 1511 12 Node G 5 1512 13 Node X 11 151113 14 Node Y 11 151114 15 Node Z 11 151115 Hình 2 Dữ liệu mô tả cấu trúc cây đa cấp Đừng quan tâm đến giá trị column WoodenLeg tôi sẽ giải thích ở phần sau NodelD của node cha sẽ nhỏ hơn NodeID của node con. Đối với các node cùng cấp NodeID của node trái sẽ nhỏ hơn NodeID của node phải. Đọc đến đây các bạn có thể thắc mắc nếu NodeID của một cây có sẵn có giá trị không thoả điều kiện trên thì chúng ta có sắp xếp được hay không. Câu trả lời là hoàn toàn có thể vì khi đó chúng ta có thể tạo thêm một column mới với các giá trị thoả điều kiện. Vì muốn giữ tính đơn giản cho bài viết nên cho phép tôi không nêu ra cách tính cho trường hợp này. Nếu có bất kỳ thắc mắc gì các bạn có thể liên hệ trực tiếp với tôi. Đối với node gốc Root Node thì ParentID Null. Các node thứ cấp còn lại sẽ có ParentID bằng NodeID của node cha gần nhất. Chúng ta dễ dàng nhận thấy không thể sử dụng bất kỳ các cột NodeID hay NodeName hay ParentID để hiển thị danh sách các Node theo thứ tự duyệt trên. Trong bài viết này tôi sẽ dùng cột WoodenLeg với các giá trị đặc