Tôi có một dự luật của bảng vật liệu được thiết lập như thế này:
mục - mẹSử dụng truy vấn MySQL phải đi qua hàng để thực hiện một cây đệ quy
Kết quả cuối cùng khi tôi hiển thị danh mục vật liệu được rằng nó được hiển thị như thế này:
item 1 - parent 0
item 2 - parent 1
item 3 - parent 1
kết quả cuối cùng cũng có thể là đa cấp như thế này:
item 3 - parent 0
item 4 - parent 3
item 76 - parent 3
Và nó có thể đi vào vô cùng tận:
item 76 - parent 0
item 46 - parent 76
item 46 - parent 0
item 25 - parent 46
Ngay bây giờ, tôi hoặc là chỉ nhận được 1 cấp độ từ cơ sở dữ liệu:
SELECT * FROM bom WHERE parentId = $itemId (shorthand)
Hoặc kéo mỗi dòng từ bảng và sử dụng hàm đệ quy của tôi để sắp xếp ra chỉ là những người tôi cần, nhưng điều này rõ ràng là không hiệu quả vì tôi chỉ có thể cần 10 hàng, nhưng tôi kéo 10.000 bản ghi. Đầu ra của hàm đệ quy sẽ chỉ tạo một cây như sau:
item 1
item 2
item 3
item 4
item 76
item 46
item 25
Tất cả những gì tôi biết là tôi bắt đầu từ mục 1. Mục 5 có thể có cha mẹ là 11; họ không phải đi tuần tự. Tôi muốn có được tất cả các cành con trên cây. Làm thế nào tôi có thể làm truy vấn này trong mysql?
Thủ tục tuyệt vời. Nhưng sau đó 'SELECT id, GetFamilyTree (id) TỪ pctable;' ném một lỗi: _ERROR 1292 (22007): Giá trị DOUBLE bị cắt bớt không chính xác: '4,5'_. Tôi đã cố gắng để gỡ lỗi nó, nhưng vô ích. Bạn có ý kiến gì không! Cảm ơn – idok