Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
сортировка дерева
|
|||
|---|---|---|---|
|
#18+
Господа доброго времени. в пятницу на работе рисовал одно задание, смысл которого иерархическая структура элементов. на входе имеем массив элементов Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. необходимо было представить в виде таблицы: idnamelvl1root12test11.13test21.24test41.2.15test51.2.220root2221test212.122test222.223test232.2.124test242.2.1.1 думаю смысл понятен, собственно в реляционном виде реализация выглядит так (не по той модели что я привел выше но смысл тот же): Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. но вот эта сортировка в конце меня как то напрягает, есть у кого мысли как можно элегантнее нарисовать? нюанс: необходимо что бы сортировка конечного списка элементов была на стороне сервера, в конечном итоге данные получает fastreport с кучей группировок и порядок строк из набора данных играет ключевую роль что бы со стороны сервера иерархия была сразу предоставлена правильно. так что предложение сортировать на стороне клиента не подойдет :) это вообщем пятничный вопрос: а можно лучше? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2018, 00:52 |
|
||
|
сортировка дерева
|
|||
|---|---|---|---|
|
#18+
felix_ff, а "о чём" вообще эта сортировка ? :) Зачем этот convert в binary ? чем сортировка по convert-у lvl_descr отличается от сортировки просто по lvl_descr ? Вы заметили, что на таком, Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. будет "лажать" и с "конвертом" и без lvl_descr22.12.22.2.12.2.1.12.2.1.102.2.1.2 ------------------------ как-то так можно, в принципе, решить Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. idparentlvl_descrlvlorderby1NULL111211.121,01311.221,02531.2.131,0201631.2.231,0202731.2.331,0203831.2.431,0204931.2.531,02051031.2.631,02061131.2.731,02071231.2.831,02081331.2.931,02091431.2.1031,0211531.2.1131,021120NULL21221202.122,0122202.222,0223222.2.132,020124232.2.1.142,020101 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2018, 10:58 |
|
||
|
сортировка дерева
|
|||
|---|---|---|---|
|
#18+
court, Опачки, да. я что то до десятки в тестовом варианте не добежал, мой вариант - ни о чем, согласен. с xml можно было не заморачиваться просто она наглядней структуру отражает, но все равно спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2018, 11:56 |
|
||
|
сортировка дерева
|
|||
|---|---|---|---|
|
#18+
felix_ffа можно лучше?Не знаю критериев "лучшести", но еще можно, например, так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2018, 12:13 |
|
||
|
сортировка дерева
|
|||
|---|---|---|---|
|
#18+
invm, тоже подходит. в моем понимании "критерий лучшести" был бы выведением колонки сортировки дерева типа int/float с минимальными плясками с бубнами. id name lvl_descr order 1 root 1 12 test1 1.1 23 test2 1.2 34 test4 1.2.1 45 test5 1.2.2 520 root2 2621 test21 2.1 722 test22 2.2823 test23 2.2.1924 test24 2.2.1.110 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2018, 12:27 |
|
||
|
сортировка дерева
|
|||
|---|---|---|---|
|
#18+
Да, решение с hierarсhyid выглядит вроде идеальным. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. я правда не очень понял почему в конце в order by нужно опять делать приведение к hierarchyid, без конверта он сортирует как строку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2018, 13:38 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39677704&tid=1689378]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
89ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
| others: | 266ms |
| total: | 457ms |

| 0 / 0 |
