powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / иерархический запрос (выбрать элементы у которых количество подэлементов больше 2х)
10 сообщений из 10, страница 1 из 1
иерархический запрос (выбрать элементы у которых количество подэлементов больше 2х)
    #39386811
HolyMacaroni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день не могли бы подсказать как с помощью connect by prior выбрать элементы у которых количество подэлементов больше 2х.
Таблица:
id element id_parent
1 a null
2 aa 1
3 ab 1
4 ac 1
5 aaa 2
6 aac 2
7 aad 2
8 aaaa 5
9 aaab 5
10 aaac 5
11 aba 3
12 abb 3
13 abc 3
14 aca 4
15 acb 4
16 acc 4
17 aaca 6
18 aacb 6
19 aacc 6

правильный результат:
1 a null
...
Рейтинг: 0 / 0
иерархический запрос (выбрать элементы у которых количество подэлементов больше 2х)
    #39386840
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HolyMacaroniправильный результат:
1 a nullДа ну?
...
Рейтинг: 0 / 0
иерархический запрос (выбрать элементы у которых количество подэлементов больше 2х)
    #39386972
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HolyMacaroni,

что Вы подразымеваете под термином "подэлемент"?

Код: 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.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
SQL> ed
Wrote file afiedt.buf

  1  with t (id,element,id_parent) as (
  2  select 1,'a',null from dual union all
  3  select 2,'aa',1 from dual union all
  4  select 3,'ab',1 from dual union all
  5  select 4,'ac',1 from dual union all
  6  select 5,'aaa',2 from dual union all
  7  select 6,'aac',2 from dual union all
  8  select 7,'aad',2 from dual union all
  9  select 8,'aaaa',5 from dual union all
 10  select 9,'aaab',5 from dual union all
 11  select 10,'aaac',5 from dual union all
 12  select 11,'aba',3 from dual union all
 13  select 12,'abb',3 from dual union all
 14  select 13,'abc',3 from dual union all
 15  select 14,'aca',4 from dual union all
 16  select 15,'acb',4 from dual union all
 17  select 16,'acc',4 from dual union all
 18  select 17,'aaca',6 from dual union all
 19  select 18,'aacb',6 from dual union all
 20  select 19,'aacc',6 from dual
 21  )
 22  select id,id_parent,level,rpad(' ',(level-1)*2,' ')||element element from t
 23  start with id_parent is null
 24* connect by id_parent=prior id
SQL> /

        ID  ID_PARENT      LEVEL ELEMENT
---------- ---------- ---------- --------------------
         1                     1 a
         2          1          2   aa
         5          2          3     aaa
         8          5          4       aaaa
         9          5          4       aaab
        10          5          4       aaac
         6          2          3     aac
        17          6          4       aaca
        18          6          4       aacb
        19          6          4       aacc
         7          2          3     aad
         3          1          2   ab
        11          3          3     aba
        12          3          3     abb
        13          3          3     abc
         4          1          2   ac
        14          4          3     aca
        15          4          3     acb
        16          4          3     acc

19 rows selected.



ps
желательно тестовые данные в виде "таблички"

......
stax
...
Рейтинг: 0 / 0
иерархический запрос (выбрать элементы у которых количество подэлементов больше 2х)
    #39387019
HolyMacaroni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ElicHolyMacaroniправильный результат:
1 a nullДа ну?
Ошибся, верный результат в таком случае будет:
'1', 'a', NULL
'2', 'aa', '1'
...
Рейтинг: 0 / 0
иерархический запрос (выбрать элементы у которых количество подэлементов больше 2х)
    #39387022
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HolyMacaroniОшибся, верный результат в таком случае будет:
'1', 'a', NULL
'2', 'aa', '1'Всё равно не соответствует хотелке. http://www.bugtraq.ru/forum/faq/general/smart-questions.html] RTFM
...
Рейтинг: 0 / 0
иерархический запрос (выбрать элементы у которых количество подэлементов больше 2х)
    #39387027
HolyMacaroni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
stax..,

я имею ввиду, что есть дерево, надо найти элементы у которых цепочка подэлементов длинной больше 2х и реализовать это через connect by prior
...
Рейтинг: 0 / 0
иерархический запрос (выбрать элементы у которых количество подэлементов больше 2х)
    #39387044
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HolyMacaroniу которых цепочка подэлементов длинной больше 2хТ.е. есть внуки?!
...
Рейтинг: 0 / 0
иерархический запрос (выбрать элементы у которых количество подэлементов больше 2х)
    #39387045
HolyMacaroni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic,

точно
...
Рейтинг: 0 / 0
иерархический запрос (выбрать элементы у которых количество подэлементов больше 2х)
    #39387051
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HolyMacaroniElic,

точно
очевидно (и достаточно) level оценить
...
Рейтинг: 0 / 0
иерархический запрос (выбрать элементы у которых количество подэлементов больше 2х)
    #39387053
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HolyMacaronistax..,

я имею ввиду, что есть дерево, надо найти элементы у которых цепочка подэлементов длинной больше 2х и реализовать это через connect by prior
на 11-ке слетело
на 12-ке вроде пашет

Код: 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.
with t (id,element,id_parent) as (
select 1,'a',null from dual union all
select 2,'aa',1 from dual union all
select 3,'ab',1 from dual union all
select 4,'ac',1 from dual union all
select 5,'aaa',2 from dual union all
select 6,'aac',2 from dual union all
select 7,'aad',2 from dual union all
select 8,'aaaa',5 from dual union all
select 9,'aaab',5 from dual union all
select 10,'aaac',5 from dual union all
select 11,'aba',3 from dual union all
select 12,'abb',3 from dual union all
select 13,'abc',3 from dual union all
select 14,'aca',4 from dual union all
select 15,'acb',4 from dual union all
select 16,'acca',15 from dual union all
select 17,'aaca',6 from dual union all
select 18,'aacb',6 from dual union all
select 19,'aacc',6 from dual 
)
select t.* from t
where exists (
  select 1 from t t2
  where level>2
  start with t2.id=t.id 
  connect by t2.id_parent=prior t2.id and level<=3
)
/



.....
stax
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / иерархический запрос (выбрать элементы у которых количество подэлементов больше 2х)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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