powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как сортировать дерево
10 сообщений из 10, страница 1 из 1
Как сортировать дерево
    #32105036
klavs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
есть иерархический запрос
и нужна сортировка внутри каждого уровня !
где там вставить order by (или еще чего ?)
...
Рейтинг: 0 / 0
Как сортировать дерево
    #32105042
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
/topic/21662
...
Рейтинг: 0 / 0
Как сортировать дерево
    #32105155
klavs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а что если сложный запрос ?
select
(case when ID_PROJECT_USER_PARENT is null
then ''
else ID_USER
end) as ID,
(case when ID_PROJECT_USER_PARENT is null
then JOB_TITLE
else (select '.' || NM
from V_USERS where ID=ID_USER)
end) as NM,
ID_PROJECT_USER_PARENT

from PROJECT_USER

where ID_PROJECT=3
connect by prior ID_PROJECT_USER=ID_PROJECT_USER_PARENT start with ID_PROJECT_USER_PARENT is null
...
Рейтинг: 0 / 0
Как сортировать дерево
    #32105193
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну в 9-ке без проблем, а как в 8-ке сразу не скажу. Если только шаманить с индексами и самим запросом.
...
Рейтинг: 0 / 0
Как сортировать дерево
    #32105224
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем так усложнять запрос этими "case" - когда можно обойтись и NVL2:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
select 
  NVL2(ID_PROJECT_USER_PARENT, '', a.ID_USER) ID, 
  NVL2(ID_PROJECT_USER_PARENT, a.JOB_TITLE, '.' || b.NM) NM,
  ID_PROJECT_USER_PARENT 
from 
 PROJECT_USER a,
 V_USERS b
where 
  a.ID_USER=b.ID(+) AND
  ID_PROJECT= 3  
connect by prior a.ID_PROJECT_USER=a.ID_PROJECT_USER_PARENT 
 start with a.ID_PROJECT_USER_PARENT is null
...
Рейтинг: 0 / 0
Как сортировать дерево
    #32105501
Фотография softy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пардон, я неправильно указал порядок следования в функции:If expr1 is not null, NVL2 returns expr2. If expr1 is null, NVL2 returns expr3.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
select 
  NVL2(ID_PROJECT_USER_PARENT, a.ID_USER,'') ID, 
  NVL2(ID_PROJECT_USER_PARENT, '.' || b.NM, a.JOB_TITLE) NM,
  ID_PROJECT_USER_PARENT 
from 
 PROJECT_USER a,
 V_USERS b
where 
  a.ID_USER=b.ID(+) AND
  ID_PROJECT= 3  
connect by prior a.ID_PROJECT_USER=a.ID_PROJECT_USER_PARENT 
 start with a.ID_PROJECT_USER_PARENT is null
...
Рейтинг: 0 / 0
Как сортировать дерево
    #32105541
EthernalWonderer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
In Oracle9i, there is a new "order siblings by" in order to sort a hierarchical
query.
...
Рейтинг: 0 / 0
Как сортировать дерево
    #32106398
klavs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В том-то и дело, что это не Девяткаi !!!
а когда пишу такой запрос (где данные из двух таблиц выбираются ) выдает ошибку :

ORA-01437 cannot have join with CONNECT BY
Cause: A join operation was specified with a CONNECT BY clause. If a CONNECT BY clause is used in a SELECT statement for a
tree-structured query, only one table may be referenced in the query.
Action: Remove either the CONNECT BY clause or the join operation from the SQL statement.
...
Рейтинг: 0 / 0
Как сортировать дерево
    #32106410
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
select * from (select .. join ..) connect by ..
select * from (select .. connect by ..)  join ..
...
Рейтинг: 0 / 0
Как сортировать дерево
    #32106413
EthernalWonderer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вам же уже дали ссылку на обсуждение этого вопроса. Посмотрите - и найдёте. На этом форуме было уже много похожих обсуждений с кучей примеров. Общий принцип - создайте индекс (PARENT,CAPTION) и хинтом в запросе укажите на необходимость его использования. Иногда получается без хинта (Oracle сам использует указанный индекс), но гарантии никакой. Например, это может работать, а после analise table перестать ...
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как сортировать дерево
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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