powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Заменить connect by на sql
3 сообщений из 3, страница 1 из 1
Заменить connect by на sql
    #39673323
RedRose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Народ, не нашла ни в архивах ни в интернете. т.е. то что нашла, не очень работает.

Есть таблица и запрос

Код: plaintext
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.
program_id program_level parent_id
-3	1	null
1	1	null
-1	1	null
-2	1	null
2	2	1
3	2	1
4	2	1
729	2	1
1169	2	1
1320	2	1
1171	2	1
1150	2	1
1170	2	1
1152	2	1
1151	2	729
5	3	2
6	3	2
1323	3	2
1620	3	2
1547	3	2
1541	3	2
1531	3	2
1190	3	2
1189	3	2
1188	3	2
1185	3	2
1201	3	2
1200	3	2
1154	3	2
1149	3	2
1145	3	2
1014	3	2
1009	3	2
1001	3	2
1174	3	2

SELECT program_id
FROM program
WHERE program_level = 1
START WITH program_id = 3
CONNECT BY PRIOR parent_id = program_id;

Надо его заменить на другой, без иерархии.

Пытаюсь сделать:

with c ( program_id, program_level) as
(select program_id, program_level
from program p
WHERE program_level = 1
union all
select c.program_id program_id, c.program_level program_level
from program p join c on p.program_level = c.program_level and c.program_id = 3 )
select program_id from c


Тогда получается несколько строк. Если убрать c.program_id = 3 из второй выборки и поставить условием основного запроса, тогда ошибка:

ORA-32044: cycle detected while executing recursive WITH query

как сделать?
спасибо большое
...
Рейтинг: 0 / 0
Заменить connect by на sql
    #39673335
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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.
53.
54.
55.
56.
57.
58.
59.
60.
with program(program_id,program_level,parent_id) as
(
 select -3,1,null from dual union all
 select 1,1,null from dual union all
 select -1,1,null from dual union all
 select -2,1,null from dual union all
 select 2,2,1 from dual union all
 select 3,2,1 from dual union all
 select 4,2,1 from dual union all
 select 729,2,1 from dual union all
 select 1169,2,1 from dual union all
 select 1320,2,1 from dual union all
 select 1171,2,1 from dual union all
 select 1150,2,1 from dual union all
 select 1170,2,1 from dual union all
 select 1152,2,1 from dual union all
 select 1151,2,729 from dual union all
 select 5,3,2 from dual union all
 select 6,3,2 from dual union all
 select 1323,3,2 from dual union all
 select 1620,3,2 from dual union all
 select 1547,3,2 from dual union all
 select 1541,3,2 from dual union all
 select 1531,3,2 from dual union all
 select 1190,3,2 from dual union all
 select 1189,3,2 from dual union all
 select 1188,3,2 from dual union all
 select 1185,3,2 from dual union all
 select 1201,3,2 from dual union all
 select 1200,3,2 from dual union all
 select 1154,3,2 from dual union all
 select 1149,3,2 from dual union all
 select 1145,3,2 from dual union all
 select 1014,3,2 from dual union all
 select 1009,3,2 from dual union all
 select 1001,3,2 from dual union all
 select 1174,3,2 from dual
),
r(program_id,program_level,parent_id) as
(
   select  program_id,program_level,parent_id
     from  program
     where program_id = 3
  union all
   select  p.program_id,p.program_level,p.parent_id
    from  r,
          program p
    where r.parent_id = p.program_id
)
select  *
  from  r
  where program_level = 1
/


PROGRAM_ID PROGRAM_LEVEL  PARENT_ID
---------- ------------- ----------
         1             1

SQL> 



SY.
...
Рейтинг: 0 / 0
Заменить connect by на sql
    #39673383
RedRose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо большое
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Заменить connect by на sql
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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