Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Построить текстовую цепочку из дерева
|
|||
|---|---|---|---|
|
#18+
wadmanX11цепочка небольшая - 2-3 узла, длина поля name - 20 символов Предлагаю пройтись дебаггером. зацикливается на одном и тот же самом нижнем узле PATH = APATH || '>' || PATH; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2015, 10:37 |
|
||
|
Построить текстовую цепочку из дерева
|
|||
|---|---|---|---|
|
#18+
wadman, исправленный запрос. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. А можешь дать немного данных для проверки? В общем тут идея проста двигаться в обратном направлении от потомка к корню дерева. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2015, 10:40 |
|
||
|
Построить текстовую цепочку из дерева
|
|||
|---|---|---|---|
|
#18+
X11, P.S. Забавно что объявлен домен INT. Что в сущности делать было вовсе не обязательно ибо у INTEGER и так есть псевдоним INT. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2015, 10:42 |
|
||
|
Построить текстовую цепочку из дерева
|
|||
|---|---|---|---|
|
#18+
Симонов Денис Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ещё раз: код возвращает только название одного самого последнего узла, а цепочки нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2015, 10:44 |
|
||
|
Построить текстовую цепочку из дерева
|
|||
|---|---|---|---|
|
#18+
Симонов ДенисА можешь дать немного данных для проверки? в смысле... ну добавь три записи в таблицу.. всего делов-то ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2015, 10:45 |
|
||
|
Построить текстовую цепочку из дерева
|
|||
|---|---|---|---|
|
#18+
X11, OK. Добавил данные,нашёл ошибку. Вот исправленная версия Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2015, 10:50 |
|
||
|
Построить текстовую цепочку из дерева
|
|||
|---|---|---|---|
|
#18+
X11wadmanпропущено... Предлагаю пройтись дебаггером. зацикливается на одном и тот же самом нижнем узле PATH = APATH || '>' || PATH; Потому что нужно внимательнее переносить код. X11 Код: sql 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2015, 10:52 |
|
||
|
Построить текстовую цепочку из дерева
|
|||
|---|---|---|---|
|
#18+
pid - это ID или PARENT? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2015, 11:01 |
|
||
|
Построить текстовую цепочку из дерева
|
|||
|---|---|---|---|
|
#18+
X11pid - это ID или PARENT? ID - id, PID - parent id. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2015, 11:06 |
|
||
|
Построить текстовую цепочку из дерева
|
|||
|---|---|---|---|
|
#18+
X11, для пути в обратном порядке Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. и соответственно ХП Код: plsql 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2015, 11:08 |
|
||
|
Построить текстовую цепочку из дерева
|
|||
|---|---|---|---|
|
#18+
исправил Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ------ Performance info ------ Prepare time = 31ms Execute time = 0ms 2 узла в случае с рекурсией (другая таблица) 4 узла ------ Performance info ------ Prepare time = 47ms Execute time = 0ms ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2015, 11:08 |
|
||
|
Построить текстовую цепочку из дерева
|
|||
|---|---|---|---|
|
#18+
Симонов Денис Код: plsql 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. ------ Performance info ------ Prepare time = 32ms Execute time = 0ms ок спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2015, 11:10 |
|
||
|
Построить текстовую цепочку из дерева
|
|||
|---|---|---|---|
|
#18+
Спасибо всем большое. Буду использовать и рекурсию, и WHILE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2015, 11:13 |
|
||
|
Построить текстовую цепочку из дерева
|
|||
|---|---|---|---|
|
#18+
сделал 2 выборки из главной таблицы (1475 записей) очень грубо, конечно, результаты: select full_region from table1 и select full_type from table1 1. с использованием WHILE План PLAN (TYPES INDEX (PK_TYPES))(TYPES INDEX (PK_TYPES)) PLAN (A NATURAL) ------ Performance info ------ Prepare time = 31ms Execute time = 0ms Avg fetch time = 0,00 ms Current memory = 9 809 144 Max memory = 9 849 408 Memory buffers = 2 048 Reads from disk to cache = 106 Writes from cache to disk = 0 Fetches from cache = 2 077 2. с использованием рекурсии План PLAN SORT ((T R REGIONS INDEX (PK_REGIONS)) PLAN (T R REGIONS INDEX (PK_REGIONS))) PLAN (A NATURAL) ------ Performance info ------ Prepare time = 16ms Execute time = 0ms Avg fetch time = 0,00 ms Current memory = 9 852 880 Max memory = 9 889 056 Memory buffers = 2 048 Reads from disk to cache = 9 Writes from cache to disk = 0 Fetches from cache = 2 497 с рекурсией быстрее в таблице REGIONS глубина больше в 2 - 3 раза и записей на много больше, чем в таблице TYPES ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2015, 11:27 |
|
||
|
Построить текстовую цепочку из дерева
|
|||
|---|---|---|---|
|
#18+
X11исправил Как-то ты уж больно сложно исправил... Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. Ты же, надеюсь, не собираешься скармливать этой процедуре ID-ы несуществующих записей, PARENT имеет FK на ID и NAME у тебя объявлено как NOT NULL... Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2015, 11:31 |
|
||
|
Построить текстовую цепочку из дерева
|
|||
|---|---|---|---|
|
#18+
X11, у рекурсии перед WHILE один недостаток она ограничена глубиной 1023. Ну обычно этого хватает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2015, 11:32 |
|
||
|
Построить текстовую цепочку из дерева
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovТы же, надеюсь, не собираешься скармливать этой процедуре ID-ы несуществующих записей, Я добавил в начало процедуры Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2015, 11:44 |
|
||
|
Построить текстовую цепочку из дерева
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovPARENT имеет FK на ID такого нету надо добавить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2015, 11:46 |
|
||
|
Построить текстовую цепочку из дерева
|
|||
|---|---|---|---|
|
#18+
Симонов ДенисX11, у рекурсии перед WHILE один недостаток она ограничена глубиной 1023. Ну обычно этого хватает ну такого количества 146% не будет, максимум до 10 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2015, 11:48 |
|
||
|
Построить текстовую цепочку из дерева
|
|||
|---|---|---|---|
|
#18+
X11Dimitry SibiryakovPARENT имеет FK на ID такого нету надо добавить Эх... Сразу-же про индексы спросил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2015, 11:51 |
|
||
|
Построить текстовую цепочку из дерева
|
|||
|---|---|---|---|
|
#18+
Для поля PARENT индекс есть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2015, 13:12 |
|
||
|
Построить текстовую цепочку из дерева
|
|||
|---|---|---|---|
|
#18+
X11, поскольку у тебя PARENT NOT NULL, то для добавления FK есть одна проблемка. Грубо говоря тебе придётся ввести корневую запись с ID 0. И в конце зациклить её на самой себя. Или же просто снять ограничение NOT NULL тогда FK добавить будет проще, но возможно придётся в других местах переделывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2015, 13:18 |
|
||
|
Построить текстовую цепочку из дерева
|
|||
|---|---|---|---|
|
#18+
X11Dimitry SibiryakovPARENT имеет FK на ID такого нету надо добавитьЭто надо сделать обязательно. А для построения цепочки нет необходимости в рекурсии, только движение вверх по цепочке parent-ов, и добавка новых имен "слева". В псевдокоде: 1. Задано - ID начальное 2. Устанавливаем начальные значения: PATH результат = '' - пустая строка, но не NULL ID текущее = ID начальное 3. В цикле: WHILE <ID текущее не есть корневое> DO begin - находим PARENT и NАМЕ текущего ID и записываем в PARENT текущее, NAME текущее - добавляем слева: PATH результат = NAME текущее + '->' + PATH результат - ID текущее = PARENT текущее // движение "вверх" end 4. Условие в WHILE не пропускает ID корневое, Поэтому, после окончания цикла находим NAME текущее от последнего найденного PARENT текущее (которое - корень) и добавляем в начало PATH результат. 5. убираем самую правую стрелку в результате. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2015, 15:57 |
|
||
|
Построить текстовую цепочку из дерева
|
|||
|---|---|---|---|
|
#18+
У меня есть табличка с подобным деревом. Материализованный путь там строится вот таким образом: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Если заменить в этом запросе имя моей таблички SYMPTOMS на REGIONS , имена полей PARENT_ID и TITLE_EN на PARENT и NAME соответственно, то получится именно то, о чём тут просят. И вроде бы без прохода по всей базе. Ну и номер 11742 нужно заменить на параметр. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2015, 14:26 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=38945961&tid=1562878]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
182ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
| others: | 272ms |
| total: | 559ms |

| 0 / 0 |
