|
|
|
XE11.2: иерархич запрос без обёртки - 1)фильтр по двум уровням 2)распознать лист дерева
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! вопрос по теме. К сож в доке не было указано, что нельзя использовать SYS_CONNECT_BY_PATH() в разделе WHERE, что даёт ORA-30002, function was called at places other than the SELECT list and ORDER BY clause. Вопрос: хотелось бы, не заворачивая запрос в обёртку , оставить только ветки 1-4 и 1-4-5 Например, задать условие типа гипотетического Код: plaintext Пример запроса Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Код: plaintext 1. 2. 3. 4. 5. 2) неожиданно узнал, что лист дерева НЕ то же самое, что и в "_ISLEAF". Похожий вопрос: как бы его распознать, без обёртки? Ну и без подзапросов тоже... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2017, 16:59 |
|
||
|
XE11.2: иерархич запрос без обёртки - 1)фильтр по двум уровням 2)распознать лист дерева
|
|||
|---|---|---|---|
|
#18+
exp98хотелось бы, не заворачивая запрос в обёртку , оставить только ветки 1-4 и 1-4-5 rec with exp98неожиданно узнал, что лист дерева НЕ то же самое, что и в "_ISLEAF"_isleaf это именно лист когда речь идет про дерево. У графа такого понятия нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2017, 17:19 |
|
||
|
XE11.2: иерархич запрос без обёртки - 1)фильтр по двум уровням 2)распознать лист дерева
|
|||
|---|---|---|---|
|
#18+
exp98, Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2017, 19:28 |
|
||
|
XE11.2: иерархич запрос без обёртки - 1)фильтр по двум уровням 2)распознать лист дерева
|
|||
|---|---|---|---|
|
#18+
ora601, Да, учитывая, что логика завязана на конкретные уровни, в rec with необходимости нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2017, 20:08 |
|
||
|
XE11.2: иерархич запрос без обёртки - 1)фильтр по двум уровням 2)распознать лист дерева
|
|||
|---|---|---|---|
|
#18+
ora601, спасибо, здесь задать сам не догадался. Извиняюсь, что с листьями попутал, там всё ок. Вот так хотел. Судя по всему, START WITH выдаёт ещё и корневой уровень, поэтому фильтрую его в WHERE. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Рекурсивный WITH (это имелось ввиду?) наверное универсальней. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2017, 10:04 |
|
||
|
XE11.2: иерархич запрос без обёртки - 1)фильтр по двум уровням 2)распознать лист дерева
|
|||
|---|---|---|---|
|
#18+
И ещё, внезапно перестал ИЕ реагировать на кнопку "Опубликовать", поэтому задержался с ответом. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2017, 10:07 |
|
||
|
XE11.2: иерархич запрос без обёртки - 1)фильтр по двум уровням 2)распознать лист дерева
|
|||
|---|---|---|---|
|
#18+
На самом деле нужно не в последовательных уровнях, а через один, или 2, или 3. Оказалось, что тогда нельзя разрывать уровни в условии. Для 2-го и 5-го уровней получилось типа такого: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. Вопрос снят. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2017, 12:52 |
|
||
|
XE11.2: иерархич запрос без обёртки - 1)фильтр по двум уровням 2)распознать лист дерева
|
|||
|---|---|---|---|
|
#18+
exp98 Код: plsql 1. 2. Уверен? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2017, 12:55 |
|
||
|
XE11.2: иерархич запрос без обёртки - 1)фильтр по двум уровням 2)распознать лист дерева
|
|||
|---|---|---|---|
|
#18+
exp98Рекурсивный WITH (это имелось ввиду?) наверное универсальней.Набери в гугле recursive with oracle. В нем бы возникала необходимость, если надо реализовать накопительные условия по нескольким уровням. Например: ветка попадает в результат если встретились два айдишника, кратные 5. Если же проверка выполняется для конкретных уровней - то лучше использовать connect by ибо он лучше по производительности. exp98На самом деле нужно не в последовательных уровнях, а через один, или 2, или 3. Оказалось, что тогда нельзя разрывать уровни в условии. Для 2-го и 5-го уровней получилось типа такого: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. Вопрос снят. Код: plsql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2017, 12:59 |
|
||
|
XE11.2: иерархич запрос без обёртки - 1)фильтр по двум уровням 2)распознать лист дерева
|
|||
|---|---|---|---|
|
#18+
Elicexp98 Код: plsql 1. 2. Уверен? глазастый), опечатушка, от другого варианта осталось, главное, что коммент верный. И как мне показалось, условия надо писать не только без разрывов, но и в порядке возрастания левела. Хотя может только показалось.. dbms_photoshop ... or level not in (2, 5) именно так у меня останавится на 2-м уровне. Пока рабочая гипотеза, что в условии левел должен возрастать монотонно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2017, 09:51 |
|
||
|
XE11.2: иерархич запрос без обёртки - 1)фильтр по двум уровням 2)распознать лист дерева
|
|||
|---|---|---|---|
|
#18+
Elic, вот работающий пример Код: 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. Сейчас на 4-м оба раза берём 7. Неудобство получается уже если на 4-м нужно один раз 6, другой раз 7 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2017, 10:18 |
|
||
|
XE11.2: иерархич запрос без обёртки - 1)фильтр по двум уровням 2)распознать лист дерева
|
|||
|---|---|---|---|
|
#18+
exp98, Если на 4-м надо учитывать айдишник на 2-м Код: plaintext Но с каждым сообщением менее понятно что таки ты хочешь реализовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2017, 11:43 |
|
||
|
XE11.2: иерархич запрос без обёртки - 1)фильтр по двум уровням 2)распознать лист дерева
|
|||
|---|---|---|---|
|
#18+
dbms_photoshopс каждым сообщением менее понятно Не обращайте внимания, теперь уже просто играю с запросом, ничего не прося. Дело было так. У нас (в конторе) есть иерархич-ая таблица - одна такая всего. Начальная идея - не очень громоздкие фильтры веток "на лету" именно иерархич-им запросом без обёрток, подзапросов и вызовов хранимок. Сперва пример упростил неудачно, потом последовательно натыкался на грабли. Сейчас в целом цель - пощупать возможности иерархич-ого запроса. Если упрусь в невозможное, придётся обернуть, а там уже по path, но тогда тексты запросов громоздкие. Но это всё факультативно, и отсюда опечатки - я не многостаночник, да ещё ИЕ-11 внезапно стал часто не пропускать посты. Вот сейчас хотелка получить таким способом только 2 ветки 4-го уровня 1-2-3-6, 1-4-5-7. Про ИД ничего неизвестно кроме того, что оно есть. Вообще же в прошлом году ваял длинный запрс, где это дерево раскручивалось в промежуточный курсор. Витает мысль уменьшать этот курсор на лету. Баловство, да ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2017, 12:31 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39483113&tid=1885652]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
163ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
72ms |
get tp. blocked users: |
2ms |
| others: | 216ms |
| total: | 500ms |

| 0 / 0 |
