Tôi không biết liệu điều tôi đang hỏi có thể xảy ra hay không, nhưng đây là tình huống của tôi. Tôi có một bảng được cấu trúc giống như thế này:Làm thế nào để viết một truy vấn MYSQL mà sẽ trả lại trẻ em lồng nhau dưới cha mẹ?
+--------------------------------------------------+
| id | parent_id | name | category | ....
+--------------------------------------------------+
| 0 | -1 | item0 | 1 |
| 1 | 0 | item1 | 1 |
| 2 | 0 | item2 | 1 |
| 3 | 2 | item3 | 1 |
| 4 | 2 | item4 | 1 |
| 5 | -1 | item5 | 1 |
+--------------------------------------------------+
Một parent_id -1 sẽ có nghĩa là mục "cơ sở" không có cha mẹ. Mỗi mục sẽ có nhiều cột thông tin hơn. Tôi cần phải bằng cách nào đó đầu ra tất cả các mục trong một thể loại lồng như sau:
item0 => item1
=> item2
=> item3
=> item4
item5
Tôi không biết nếu điều đó có ý nghĩa hay không, nhưng hy vọng nó! Cách duy nhất tôi có thể nghĩ đến việc thực hiện điều này là tạo truy vấn để nhận tất cả các mục "cơ sở" (truy vấn các hàng có parent_id = -1) sau đó lặp qua từng hàng kết quả, truy vấn các hàng có parent_id của chúng. bằng id của hàng hiện tại, sau đó lặp lại quá trình đi sâu hơn và sâu hơn cho đến khi không có thêm con nào cho một mục cơ sở.
Có cách nào tốt hơn không?
Cảm ơn !!
tôi sẽ đi cho 'null' để chỉ ra không có cha mẹ –
Điều đó nghe như một ý tưởng hay. Tôi không thực sự biết những gì tôi đang làm ;-) – Nate
Bạn có thể nhận được tất cả trong một đi và sau đó xây dựng cấu trúc trong php: http://stackoverflow.com/questions/2915748/how-can-i-convert- a-series-of-cha-con-mối quan hệ-thành-một-thứ bậc-tre – jeroen