Saya yakin jalan terwujud Anda tidak benar.
Logika apa yang Anda dapatkan untuk mengurutkan hal-hal seperti ini
1
1.2
1
1.5
Mengapa yang kedua tidak sama dengan yang pertama?
Jika Anda memiliki
1
1.2
2
2.5
Ini akan menjadi hal yang sepele.
EDIT:Saya telah melihat contoh Anda dan Anda tidak menyimpan jalur material dari sebuah baris, tetapi Anda menyimpan jalur material dari baris induk. Beginilah seharusnya jalur material dari baris tersebut. Menyortir langsung di matpath akan berfungsi jika Anda tidak memiliki lebih dari 9 cabang jika Anda menyimpannya sebagai:
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
jika tidak (>9) Anda harus mengubah matpath
menjadi sesuatu seperti
001.002.006
001.002.006.008
yang akan mendukung hingga 999 cabang.
Harap dicatat
- bahkan pendekatan dengan 4 digit tetap, seperti
0001.0002.0006
akan memberi Anda bidang yang lebih pendek dari jawaban yang diterima - Anda dapat mengurai matpath dan menghasilkan nilai penyortiran dengan cepat dengan fungsi pengguna
- Anda bisa langsung menyimpan matpath dalam format ini (juga memiliki beberapa properti bagus lainnya)