Tôi tin rằng con đường hiện thực hóa của bạn là không đúng.
Bạn nhận được logic nào để sắp xếp những thứ như thế này
1
1.2
1
1.5
Tại sao cái thứ hai không cùng với cái thứ nhất?
Nếu bạn có
1
1.2
2
2.5
Điều này sẽ là tầm thường.
CHỈNH SỬA:Tôi đã xem ví dụ của bạn và bạn không lưu trữ đường dẫn cụ thể hóa của một hàng, nhưng bạn đang lưu trữ một đường dẫn cụ thể hóa của hàng mẹ. Đây là cách đường dẫn cụ thể hóa của hàng thực sự trông như thế nào. Sắp xếp trực tiếp trên matpath sẽ hoạt động nếu bạn không có nhiều hơn 9 nhánh nếu bạn lưu trữ nó dưới dạng:
id | parent_id | matpath | created
----+-----------+-----------+----------------------------
2 | 1 | 1.2 | 2010-05-08 15:18:37.987544
6 | 2 | 1.2.6 | 2010-05-08 17:50:43.288759
8 | 6 | 1.2.6.8 | 2010-05-09 14:01:17.632695
3 | 1 | 1.3 | 2010-05-08 17:38:14.125377
4 | 1 | 1.4 | 2010-05-08 17:38:57.26743
5 | 1 | 1.5 | 2010-05-08 17:43:28.211708
9 | 5 | 1.5.9 | 2010-05-09 14:02:43.818646
7 | 1 | 1.7 | 2010-05-08 18:18:11.849735
nếu không (> 9) bạn sẽ phải chuyển matpath
thành một cái gì đó giống như
001.002.006
001.002.006.008
sẽ hỗ trợ lên đến 999 chi nhánh.
Xin lưu ý
- ngay cả cách tiếp cận với 4 chữ số cố định, chẳng hạn như
0001.0002.0006
sẽ cung cấp cho bạn một trường ngắn hơn trong câu trả lời được chấp nhận - bạn có thể phân tích cú pháp matpath một giá trị sắp xếp sản phẩm một cách nhanh chóng bằng một hàm người dùng
- bạn có thể lưu trữ trực tiếp matpath ở định dạng này (nó cũng có một số thuộc tính tốt khác)