Věřím, že vaše zhmotněná cesta není správná.
Jakou logiku máte, abyste věci takto třídili
1
1.2
1
1.5
Proč není druhá 1 spolu s první?
Pokud jste měli
1
1.2
2
2.5
To by bylo triviální.
EDIT:Podíval jsem se na váš příklad a neukládáte zhmotněnou cestu řádku, ale ukládáte zhmotněnou cestu nadřazeného řádku. Zde je návod, jak by zhmotněná cesta řádku ve skutečnosti měla vypadat. Řazení přímo na matpath by fungovalo, pokud byste neměli více než 9 větví, pokud byste jej uložili jako:
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
jinak (>9) byste museli otočit matpath
do něčeho jako
001.002.006
001.002.006.008
který by podporoval až 999 poboček.
Vezměte prosím na vědomí
- dokonce i přístup se 4 pevnými číslicemi, jako je
0001.0002.0006
by vám poskytlo pole, které je kratší než v přijaté odpovědi - pomocí uživatelské funkce můžete za běhu analyzovat matpath a vytvářet hodnotu řazení
- v tomto formátu můžete přímo uložit matpath (má také některé další pěkné vlastnosti)