PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Сортиране на дърво с материализиран път?

Вярвам, че материализираният ви път не е правилен.

Каква логика имаш да сортираш неща като това

1
1.2
1
1.5

Защо вторият 1 не е заедно с първия?

Ако имаше

1
1.2
2
2.5

Това би било тривиално.

РЕДАКТИРАНЕ:Разгледах вашия пример и вие не съхранявате материализиран път на ред, но съхранявате материализиран път на родителския ред. Ето как всъщност трябва да изглежда материализираният път на реда. Сортирането директно по matpath би работило, ако нямате повече от 9 клона, ако го съхраните като:

 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

в противен случай (>9) ще трябва да включите matpath в нещо като

001.002.006
001.002.006.008

който ще поддържа до 999 клона.

Моля, обърнете внимание

  • дори подходът с 4 фиксирани цифри, като 0001.0002.0006 ще ви даде поле, което е по-кратко от приетия отговор
  • можете да анализирате matpath и стойност за сортиране на продукцията в движение с потребителска функция
  • можете директно да съхранявате matpath в този формат (има и някои други хубави свойства)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Вземете идентификатор от условно INSERT

  2. Дали SELECT или INSERT във функция е склонна към условия на състезание?

  3. Rails:Инсталиране на PG gem на OS X - неуспех при изграждане на собствено разширение

  4. Невъзможно е да инсталирам PG gem на моя Mac с Mavericks

  5. правилна анотация за хибернация за байт[]