Nếu bạn hỏi về "Có trong truy vấn đệ quy mysql không?" trả lời "KHÔNG".
Nhưng có một cách tiếp cận rất tốt để xử lý nó.
Tạo bảng trợ giúp (nói CatHierarchy)
CatHierarchy:
SuperId, ChildId, Distance
------------------------------
1 1 0
1 2 1
2 2 0
Dữ liệu dư thừa này cho phép dễ dàng trong 1 truy vấn để chọn bất kỳ phân cấp nào và trong 2 chèn hỗ trợ bất kỳ phân cấp nào (xóa cũng được thực hiện trong 1 truy vấn với sự trợ giúp của xóa toàn vẹn tầng).
Vì vậy, điều này có nghĩa là gì. Bạn theo dõi tất cả các đường dẫn trong hệ thống phân cấp. Mỗi nút của Cat phải thêm tham chiếu vào chính nó (khoảng cách 0), sau đó hỗ trợ sao chép bằng cách thêm dữ liệu dư thừa về các nút được liên kết.
Để chọn danh mục có phụ chỉ cần viết:
SELECT c.* from Category c inner join CatHierarchy ch ON ch.ChildId=c.cat_id
WHERE ch.SuperId = :someSpecifiedRootOfCat
someSpecifiedRootOfCat - là tham số để chỉ định gốc của categoryTHATS ALL!