|
Connect by
|
|||
---|---|---|---|
#18+
Уважаемые форумчане, добрый день! Подскажите, пжлста, с идеями решения задачи, у самого кончились. Имеется таблица вида: 1 столбец - иерархический код через точку (1.2.3.3), 2 столбец - описание названия данного уровня (например, дверь шкафа, ручка и т.д.) Требуется составить запрос, в котором будет выведен полный путь для каждого уровня (мебель>шкаф>дверца...). Понимаю, что нужно использовать connect by и sys_connect_by_path, но не могу сообразить как корректно обойти такое дерево. Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2021, 08:40 |
|
Connect by
|
|||
---|---|---|---|
#18+
zipperxz Имеется таблица вида: приведите пример данных (желательно с помощью with) Код: plsql 1. 2. 3. 4. 5. 6.
..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2021, 12:14 |
|
Connect by
|
|||
---|---|---|---|
#18+
Stax, with t as( select '1.2.1' as code, 'дверца' as name from dual union all select '1.2' as code, 'шкаф' as name from dual union all select '1' as code, 'мебель домашняя' as name from dual union all select '2' as code, 'бытовая техника' as name from dual union all select '2.1' as code, 'миксер' as name from dual ) select * from t code, sys_connect_by_path(name ,'.') from t connect by regexp_substr(code, '[^.]+', 1, level) -- какое-то хитрое условие соединения ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2021, 14:05 |
|
Connect by
|
|||
---|---|---|---|
#18+
Stax, Добавил, буду очень признателен за помощь) Что-то запутался в этой иерархии, как строку саму на себя рекурсивно подцепить... Можно в условие брать соединение по подстроке, но тогда prior непонятно как использовать.. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2021, 14:19 |
|
Connect by
|
|||
---|---|---|---|
#18+
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2021, 14:39 |
|
Connect by
|
|||
---|---|---|---|
#18+
zipperxz, Код: 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.
..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2021, 14:41 |
|
Connect by
|
|||
---|---|---|---|
#18+
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2021, 14:42 |
|
Connect by
|
|||
---|---|---|---|
#18+
Алымов Анатолий, SY, Stax, Спасибо Вам огромное, гуру SQL, очень помогли разобраться!!! Скажите, пжлста, что почитать на эту тему, где так хорошо объясняется этот рекурсивный запрос, что вы с такой легкостью решили? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2021, 14:46 |
|
Connect by
|
|||
---|---|---|---|
#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.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2021, 21:58 |
|
Connect by
|
|||
---|---|---|---|
#18+
andrey_anonymous Гури, вы там прикалываетесь? Это жеж классический классификатор. Для работы с ним иерархические запросы не нужны. Совсем не нужны. И как это дает "полный путь для каждого уровня (мебель>шкаф>дверца...)" по имени а не полный путь для каждого уровня 1.2.1 по коду? SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.12.2021, 23:30 |
|
Connect by
|
|||
---|---|---|---|
#18+
+ rtrim Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
output Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2021, 01:24 |
|
Connect by
|
|||
---|---|---|---|
#18+
andrey_anonymous Совсем не нужны. етого мало, нужно еще и "выравнивание" 1.1 11.1 2.1 ps авторГури, вы там прикалываетесь? с точками я переборщил (прокололся ), начал делать с like и перестраховался .... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2021, 09:33 |
|
|
start [/forum/topic.php?fid=52&msg=40119638&tid=1879686]: |
0ms |
get settings: |
27ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
34ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
340ms |
get tp. blocked users: |
2ms |
others: | 292ms |
total: | 736ms |
0 / 0 |