Mam strukturę drzewa w tabeli i używa zmaterializowanych ścieżek, aby umożliwić mi szybkie odnalezienie dzieci. Jednak muszę również sortować wyniki z dokładnością do pierwszej, tak jak można by oczekiwać w przypadku odpowiedzi na wątkowe forum.Sortowanie drzewa ze zmaterializowaną ścieżką?
id | parent_id | matpath | created
----+-----------+---------+----------------------------
2 | 1 | 1 | 2010-05-08 15:18:37.987544
3 | 1 | 1 | 2010-05-08 17:38:14.125377
4 | 1 | 1 | 2010-05-08 17:38:57.26743
5 | 1 | 1 | 2010-05-08 17:43:28.211708
7 | 1 | 1 | 2010-05-08 18:18:11.849735
6 | 2 | 1.2 | 2010-05-08 17:50:43.288759
9 | 5 | 1.5 | 2010-05-09 14:02:43.818646
8 | 6 | 1.2.6 | 2010-05-09 14:01:17.632695
więc ostateczne wyniki powinny rzeczywiście być sortowane tak:
id | parent_id | matpath | created
----+-----------+---------+----------------------------
2 | 1 | 1 | 2010-05-08 15:18:37.987544
6 | 2 | 1.2 | 2010-05-08 17:50:43.288759
8 | 6 | 1.2.6 | 2010-05-09 14:01:17.632695
3 | 1 | 1 | 2010-05-08 17:38:14.125377
4 | 1 | 1 | 2010-05-08 17:38:57.26743
5 | 1 | 1 | 2010-05-08 17:43:28.211708
9 | 5 | 1.5 | 2010-05-09 14:02:43.818646
7 | 1 | 1 | 2010-05-08 18:18:11.849735
Jak będę pracować, że obecnie? Czy mogę to zrobić w prostym SQL (to jest PostgreSQL 8.4), czy też należy dodać dodatkowe informacje do tej tabeli?
Aktualizacja: próbujesz lepiej wyjaśnić kryteria sortowania.
Wyobraź sobie, że id "1" to główny wpis na forum, a wszystko z "matpath" zaczynającym się od "1" jest dzieckiem tego wpisu. Tak więc ids od 2 do 5 to bezpośrednie odpowiedzi do 1 i uzyskanie ścieżek matematycznych z "1". Jednak id 6 jest odpowiedzią 2, a nie bezpośrednio na 1, więc otrzymuje matpath równy 1.2. Oznacza to, że za pomocą gwintowanego forum z prawidłowego zagnieżdżenia, ze wszystkimi identyfikatorami przedstawionych w tabelach, struktura forum będzie wyglądać tak, stąd wymóg zamawiającego:
* id 1 (root post)
* id 2
* id 6
* id 8
* id 3
* id 4
* id 5
* id 9
* id 7
Rozszerzyłem stanowisko roota, aby wyjaśnić wymóg sortowania. Przepraszam za zamieszanie. – Ovid
@Ovid: Ok, ma sens. Wyjaśnię, jak to zrobić. – RedFilter
Właśnie dodałem to. Działa jak marzenie. Dziękuję Ci. – Ovid