Форум: "Прочее";
Текущий архив: 2010.12.05;
Скачать: [xml.tar.bz2];
ВнизOracle. connect by prior. Порядок возвращения записей Найти похожие ветки
← →
12 © (2010-08-25 14:30) [0]пусть имеется иерархия
ТЕСТ
ТЕСТ2
ТЕСТ33
ТЕСТ4
ТЕСТ5
ТЕСТ6
ТЕСТ7
получаем ее запросом
select LEVEL, s.* from subscriber s
where s.filial_id = 13
start with s.id_subscriber = 4234
connect by prior s.id_subscriber = s.up_id;
1 4234 ТЕСТ
2 4235 4234 ТЕСТ2
2 4236 4234 ТЕСТ33
3 4237 4236 ТЕСТ4
3 4239 4236 ТЕСТ5
3 4240 4236 ТЕСТ6
4 4241 4240 ТЕСТ7
т.е. все получили так, что можно строить иерархию прямо идя сверху вниз
вопрос
А не может ли так быть, что вернется
1 4234 ТЕСТ
2 4236 4234 ТЕСТ33
2 4235 4234 ТЕСТ2
3 4237 4236 ТЕСТ4
3 4239 4236 ТЕСТ5
3 4240 4236 ТЕСТ6
4 4241 4240 ТЕСТ7
и, получается, что уже не возможно построить, не заглядывая вперед!
так может вернуться dataset по второму варианту или нет? (сколько раз не пробовал - нет. Но вдруг?)
← →
Petr V. Abramov © (2010-08-25 14:39) [1]
> так может вернуться dataset по второму варианту или нет?
> (сколько раз не пробовал - нет. Но вдруг?)
>
запросто может.
чтоб гарантированно отсортировать "правильно", начиная, по-моему, с 9-ки, есть волшебное словоorder siblings by
, но в 10-ке оно периодически глючит, валится по 600-й ошибке, лечится патчем до 10.2.0.4, который я не ставил, ничего сказать по него не могу.
← →
12 © (2010-08-25 14:47) [2]спасибо, Петр!
Надо чтоб гарантировано работало на всех, в т.ч и на 8 :)
придется пересмотреть построение..
← →
Игорь Шевченко © (2010-08-25 14:51) [3]
> придется пересмотреть построение..
order by в конце запроса не поможет ?
← →
Petr V. Abramov © (2010-08-25 14:53) [4]
> Игорь Шевченко © (25.08.10 14:51) [3]
не поможет, сортировка по иерархии слетит.
← →
12 © (2010-08-25 14:56) [5]да, в общем случае, слетит
пробовал уже
← →
Dennis I. Komarov © (2010-08-26 16:17) [6]Первое поле не имеет смысл, а вот сделать уникальный ключ для каждого родителя - поможет.
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2010.12.05;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.003 c