Jeg tror, at din materialiserede vej ikke er rigtig.
Hvilken logik får du for at sortere ting som dette
1
1.2
1
1.5
Hvorfor er den anden 1 ikke sammen med den første?
Hvis du havde
1
1.2
2
2.5
Dette ville være trivielt.
EDIT:Jeg har kigget på dit eksempel, og du gemmer ikke en materialiseret sti af en række, men du gemmer en materialiseret sti for den overordnede række. Her er, hvordan den materialiserede sti i rækken faktisk burde se ud. At sortere direkte på matpath ville fungere, hvis du ikke ville have mere end 9 grene, hvis du gemte det som:
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
ellers (>9) bliver du nødt til at vende matpath
til noget som
001.002.006
001.002.006.008
der ville understøtte op til 999 filialer.
Bemærk venligst
- selv tilgangen med 4 faste cifre, såsom
0001.0002.0006
ville give dig et felt, der er kortere end i det accepterede svar - du kan parse matpath en produktsorteringsværdi med en brugerfunktion
- du kan direkte gemme matpath i dette format (det har også nogle andre gode egenskaber)