Nếu bạn cần truy vấn phân cấp đối với cơ sở dữ liệu không hỗ trợ tính toán truy vấn con đệ quy (xem APC's answer), một thay thế công nghệ rất thấp là mã hóa cấu trúc phân cấp thành khóa riêng. Tất nhiên điều này sẽ chỉ hoạt động nếu bạn có thể kiểm soát quá trình cập nhật bảng và viết lại các cập nhật chính sau đây của cha mẹ.
Ví dụ:
FLAT_HIER_ID NODE_ID PARENT_NODE_ID
~N1 N1
~N1~N2 N2 N1
~N1~N2~N3 N3 N2
~N1~N2~N4 N4 N2
Không rất thanh lịch, nhưng nó mang lại cho bạn một lộ trình để truy vấn.
Tùy chọn khác (có thể tốt hơn) là sử dụng phương thức "Nested Set Model". Đây là phương thức được sử dụng trong Fogbugz để xử lý truy vấn con trong MSSQL, MySQL và MS Access.
Mô hình này được giải thích tại địa chỉ:
http://www.developersdex.com/gurus/articles/112.asp
Việc sử dụng các phương pháp trong Fogbugz được mô tả tại địa chỉ:
http://www.fogcreek.com/FogBugz/blog/post/Subcases-and-Hierarchy.aspx
Nguồn
2009-11-04 11:24:27
Không có bất kỳ ANSI cú pháp truy vấn thứ bậc mà tôi m nhận thức được - nó khác nhau giữa SQL Server, MySQL và Postgres ít nhất. –