powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / sys_connect_by_path(rownum) с фильтрацией
4 сообщений из 54, страница 3 из 3
sys_connect_by_path(rownum) с фильтрацией
    #39421141
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshoprownum генерится попадании новой строки в результирующий recordset!0 лет прошло :)
20295979
...
Рейтинг: 0 / 0
sys_connect_by_path(rownum) с фильтрацией
    #39421698
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshopЭто тоже для меня? :)
На основании чего сделан вывод, что мне это не очевидно?

PS. Лучше б ты Станиславу отвечал на его некорректную реплику.

Тебе, тебе:

stax..dbms_photoshopпропущено...
Что?
а когда по твоему ?

соответственно и ровнум вычисляется после "иерархичной" сортировки

.....
stax

"иерархичнaя" сортировкa это тот случай когда ROWNUM присваивается после сортиpовки. Так-что мой пост это ответ на твой "Что?".

SY.
...
Рейтинг: 0 / 0
sys_connect_by_path(rownum) с фильтрацией
    #39421702
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshopstax..,

Никакой сортировки по умолчанию не выполняется.
Выполняется построение дерева методом обхода в глубину.

Более конкретным языком
http://docs.oracle.com/cd/B19306_01/server.102/b14200/queries003.htm Oracle returns the rows in the order shown in Figure 9-1. In the diagram, children appear below their parents. For an explanation of hierarchical trees, see Figure 3-1, "Hierarchical Tree".
А при использовании rownum на первый взягляд может показаться неожиданным, но по факту все довольно закономерно.

......

Оракл сначала опускается на указанное число строк (и так получается, что уровней) из одного корня, потом переходит на другой корень и условие соединения сразу же становится ложным.


если siblings нет то конечно упорядочивать не надо, и пункт пропускаем

теперь насчет rownum, он присваивается в последнюю очередь (после Any remaining WHERE clause predicates are evaluated.)
если есть сортировка то условие НЕ сразу становится ложным.



kosourВ моих запросах практически не используются иерархические запросы, зато очень
болезнены вопросы фильтрации.


а от к Any remaining WHERE надо относится с уважением

казалось бы "одинаковые" запрсы (с тотожнимы планами выполнения)
select e.ename from emp e,dept d
where e.deptno=d.deptno and DNAME<>'ACCOUNTING'
и
select e.ename from emp e,(select * from dept d where DNAME<>'ACCOUNTING') d
where e.deptno=d.deptno

поведут себя по разному, если добавить connect by

.....
stax
...
Рейтинг: 0 / 0
sys_connect_by_path(rownum) с фильтрацией
    #39423382
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SY"иерархичнaя" сортировкa это тот случай когда ROWNUM присваивается после сортиpовки. Так-что мой пост это ответ на твой "Что?"Нет никакой "иерархичной" сортировки под капотом.
Да, order siblings влияет на порядок выдачи детей каждого конкретного родителя (яное дело это имеет смысл если детей более одного для конкретного родителя) но создание этого порядка - это не отдельная сортировка над полученным набором.
Просто в рекурсии вызывается что-то типа GetNextChild(), который может выдавать детей в разном порядке в зависимости от order siblings.
Stax..если siblings нет то конечно упорядочивать не надо, и пункт пропускаемКак сказавно выше в этом же сообщении,
Во-первых, siblings имеет смысл при наличии узлов с более чем одним потомком.
Во-вторых, никего не упорядочевается, если понимать под упорядочеванием сортировку набора данных.
Может изменяться порядок обхода (перебора дочерних записей).
Stax..теперь насчет rownum, он присваивается в последнюю очередь (после Any remaining WHERE clause predicates are evaluated.)Абсолютно очевидно, что rownum инкрементируется только если строка прошла все проверки на попадание в результат. Об этом написал выше и я и Элик.
Stax..если есть сортировка то условие НЕ сразу становится ложным.Это замечание относилось к конкретному примеру. Просьба еще раз пересмотреть его и если не согласен - привести контрпример.
Что-то додумывать или подразумевать чего я не говорил и потом оспаривать - не очень конструктивный подход.

Итого, если я правильно вас двоих понял, ваши утверждения, то выполняется обход дерева, выполняется сортировка, выполняется генерация rownum - это неверно.
Выполняется только рекурсивный код и инкремент определенных псевдостобцов в запивимости от наступления некоторых условий.
Это я написал в первом своем сообщении в этой теме.
Ошибочно рассматривать генерацию псевдостолбцов в отрыве от построения иерархии.

Stax..казалось бы "одинаковые" запрсы (с тотожнимы планами выполнения)Совсем плохой тон делать соединения и connect by на одном уровне. 10053 проясняет почему.
...
Рейтинг: 0 / 0
4 сообщений из 54, страница 3 из 3
Форумы / Oracle [игнор отключен] [закрыт для гостей] / sys_connect_by_path(rownum) с фильтрацией
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]