|
|
|
Работа с деревом
|
|||
|---|---|---|---|
|
#18+
Есть древовидная структура ID, ParentID Как получить запросом - некоторую запись по известному ID и всех ее потомков? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2002, 15:17:31 |
|
||
|
Работа с деревом
|
|||
|---|---|---|---|
|
#18+
Вот пример: Код: plaintext 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. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. Если что непонятно, пишите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2002, 15:48:17 |
|
||
|
Работа с деревом
|
|||
|---|---|---|---|
|
#18+
[src][/src] select into #tmp id from <table> where parentid = @id --где @id корень ветки while @@rowcount <>0 begin insert #tmp select id from <table> t1 join #tmp t2 on t1.parentid = t2.id end --Теперь в #tmp id узлов всей ветки select id from #tmp drop table #tmp ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2002, 15:53:32 |
|
||
|
Работа с деревом
|
|||
|---|---|---|---|
|
#18+
В общем случае - когда число уровней иерархии не ограничено - есть два пути: или рекурсивная фукнция, или оптимизационное поле, в которое выписываете, например, коды всех предков элемента, через какой-то разделитель, а ищете - LIKE'ом. Есть другие красивые методы оптимизации, но уж очень много времени на каждое изменение в дереве... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2002, 15:54:29 |
|
||
|
Работа с деревом
|
|||
|---|---|---|---|
|
#18+
И еще, про работу с деревьями можно почитать здесь: http://sdm.viptop.ru/articles/sqltrees.html, да и на www.sql.ru поискать можете, очень много писалось... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2002, 16:01:31 |
|
||
|
Работа с деревом
|
|||
|---|---|---|---|
|
#18+
А можно ли получить путь в дереве от некоторого листа (или просто узла) до корня? Если можно, то, пожалуйста. напишите, как это сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.11.2002, 14:27:04 |
|
||
|
|

start [/forum/topic.php?fid=46&tid=1818524]: |
0ms |
get settings: |
6ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 213ms |
| total: | 329ms |

| 0 / 0 |
