powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / sys_connect_by_path(rownum) с фильтрацией
25 сообщений из 54, страница 1 из 3
sys_connect_by_path(rownum) с фильтрацией
    #34953434
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
select * from
( select sys_connect_by_path(rownum, '~') as path from dual
    where mod(level,  3 ) =  0 
    connect by level <=  10 
);

PATH
----------------------
~ 1 ~ 1 ~ 1 
~ 1 ~ 1 ~ 1 ~ 2 ~ 2 ~ 2 
~ 1 ~ 1 ~ 1 ~ 2 ~ 2 ~ 2 ~ 3 ~ 3 ~ 3 

 3  rows selected.
Парадоксально прикольное сочленение несочленимого :)
...
Рейтинг: 0 / 0
sys_connect_by_path(rownum) с фильтрацией
    #34953873
SQLap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
клевая конструкция))
...
Рейтинг: 0 / 0
sys_connect_by_path(rownum) с фильтрацией
    #34954623
тобобетобор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хм, а как это работает ?
...
Рейтинг: 0 / 0
sys_connect_by_path(rownum) с фильтрацией
    #34954640
bI!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
bI!
Гость
тобобетоборхм, а как это работает ?
По сети... но может и локально :)
...
Рейтинг: 0 / 0
sys_connect_by_path(rownum) с фильтрацией
    #34954641
Jannny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тобобетоборхм, а как это работает ? ElicПарадоксально
...
Рейтинг: 0 / 0
sys_connect_by_path(rownum) с фильтрацией
    #34954658
xymbo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ltrim :)
Только для меня пока неясно, почему "несочленимого"?
...
Рейтинг: 0 / 0
sys_connect_by_path(rownum) с фильтрацией
    #34954720
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xymboltrim :)Ты не в теме.
xymboТолько для меня пока неясно, почему "несочленимого"?Путь должен быть сформирован на наборе данных до фильтрации.
Отсюда парадокс: нам нужен rownum до фильтрации, но вычислен rownum может быть только после фильтрации, когда тех строк уже нет :)
Oracle любопытно из этой ситуации вышел. А мог(должен?) бы и выругаться :)
...
Рейтинг: 0 / 0
sys_connect_by_path(rownum) с фильтрацией
    #34954754
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElicПуть должен быть сформирован на наборе данных до фильтрации.
Отсюда парадокс: нам нужен rownum до фильтрации, но вычислен rownum может быть только после фильтрации, когда тех строк уже нет :)
Oracle любопытно из этой ситуации вышел. А мог(должен?) бы и выругаться :)Момент вычисления Ораклом результата функции для вывода в поле запроса всегда был для меня загадкой - обычно он откладывался на самый последний момент. Ну и количество обращений к этой же функции
...
Рейтинг: 0 / 0
sys_connect_by_path(rownum) с фильтрацией
    #34954801
xymbo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic xymboltrim :)Ты не в теме.
xymboТолько для меня пока неясно, почему "несочленимого"?Путь должен быть сформирован на наборе данных до фильтрации.
Отсюда парадокс: нам нужен rownum до фильтрации, но вычислен rownum может быть только после фильтрации, когда тех строк уже нет :)
Oracle любопытно из этой ситуации вышел. А мог(должен?) бы и выругаться :)
по идее путь должен был быть таким?
Код: plaintext
1.
2.
 1 ~ 2 ~ 3 
 1 ~ 2 ~ 3 ~ 4 ~ 5 ~ 6 
 1 ~ 2 ~ 3 ~ 4 ~ 5 ~ 6 ~ 7 ~ 8 ~ 9 
Спасибо за объяснение.
...
Рейтинг: 0 / 0
sys_connect_by_path(rownum) с фильтрацией
    #34954812
OraDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select * from
( select rownum, level, sys_connect_by_path(rownum, '~') as pathr, sys_connect_by_path(level, '~') as pathl from dual
    where mod(level,  3 ) =  0 
    connect by level <=  10 
);

    ROWNUM      LEVEL PATHR                          PATHL
---------- ---------- ------------------------------ ------------------------------
          1            3  ~ 1 ~ 1 ~ 1                          ~ 1 ~ 2 ~ 3 
          2            6  ~ 1 ~ 1 ~ 1 ~ 2 ~ 2 ~ 2                    ~ 1 ~ 2 ~ 3 ~ 4 ~ 5 ~ 6 
          3            9  ~ 1 ~ 1 ~ 1 ~ 2 ~ 2 ~ 2 ~ 3 ~ 3 ~ 3              ~ 1 ~ 2 ~ 3 ~ 4 ~ 5 ~ 6 ~ 7 ~ 8 ~ 9 
...
Рейтинг: 0 / 0
sys_connect_by_path(rownum) с фильтрацией
    #34954814
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тобобетоборхм, а как это работает ?
Похоже по принципу тихо сам с собою...
Для каждой строки, удовлетворяющей start with
level щелкает (топает вглубь), соответсвенно path копиться,
where ( без джойнов работает после иерархии) сгенрированные данные отсеивает - соответсвенно rownum не щелкает.
...
Рейтинг: 0 / 0
sys_connect_by_path(rownum) с фильтрацией
    #34954832
OraDen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
select * from
( select rownum, level, sys_connect_by_path(rownum, '~') as pathr, sys_connect_by_path(level, '~') as pathl from dual
    connect by level <=  10 
);

    ROWNUM      LEVEL PATHR                          PATHL
---------- ---------- ------------------------------ ------------------------------
          1            1  ~ 1                              ~ 1 
          2            2  ~ 1 ~ 2                            ~ 1 ~ 2 
          3            3  ~ 1 ~ 2 ~ 3                          ~ 1 ~ 2 ~ 3 
          4            4  ~ 1 ~ 2 ~ 3 ~ 4                        ~ 1 ~ 2 ~ 3 ~ 4 
          5            5  ~ 1 ~ 2 ~ 3 ~ 4 ~ 5                      ~ 1 ~ 2 ~ 3 ~ 4 ~ 5 
          6            6  ~ 1 ~ 2 ~ 3 ~ 4 ~ 5 ~ 6                    ~ 1 ~ 2 ~ 3 ~ 4 ~ 5 ~ 6 
          7            7  ~ 1 ~ 2 ~ 3 ~ 4 ~ 5 ~ 6 ~ 7                  ~ 1 ~ 2 ~ 3 ~ 4 ~ 5 ~ 6 ~ 7 
          8            8  ~ 1 ~ 2 ~ 3 ~ 4 ~ 5 ~ 6 ~ 7 ~ 8                ~ 1 ~ 2 ~ 3 ~ 4 ~ 5 ~ 6 ~ 7 ~ 8 
          9            9  ~ 1 ~ 2 ~ 3 ~ 4 ~ 5 ~ 6 ~ 7 ~ 8 ~ 9              ~ 1 ~ 2 ~ 3 ~ 4 ~ 5 ~ 6 ~ 7 ~ 8 ~ 9 
         10           10  ~ 1 ~ 2 ~ 3 ~ 4 ~ 5 ~ 6 ~ 7 ~ 8 ~ 9 ~ 10           ~ 1 ~ 2 ~ 3 ~ 4 ~ 5 ~ 6 ~ 7 ~ 8 ~ 9 ~ 10 
...
Рейтинг: 0 / 0
sys_connect_by_path(rownum) с фильтрацией
    #34954844
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OraDen[src oracle][/src]
И что? Фильтрация-то где?
...
Рейтинг: 0 / 0
sys_connect_by_path(rownum) с фильтрацией
    #34954847
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
select * from
( select level, sys_connect_by_path(rn, '~') as path1,
         sys_connect_by_path(rownum, '~') as path2
  from (select rownum rn from all_objects where rownum<= 2 ) tb
   where level in ( 3 , 5 )
      connect by level <=  5 
);
LEVELPATH1PATH23~1~1~1~1~1~15~1~1~1~1~1~1~1~1~2~25~1~1~1~1~2~1~1~1~2~35~1~1~1~2~1~1~1~1~4~45~1~1~1~2~2~1~1~1~4~53~1~1~2~1~1~65~1~1~2~1~1~1~1~6~7~75~1~1~2~1~2~1~1~6~7~85~1~1~2~2~1~1~1~6~9~95~1~1~2~2~2~1~1~6~9~103~1~2~1~1~11~115~1~2~1~1~1~1~11~11~12~125~1~2~1~1~2~1~11~11~12~135~1~2~1~2~1~1~11~11~14~145~1~2~1~2~2~1~11~11~14~153~1~2~2~1~11~165~1~2~2~1~1~1~11~16~17~175~1~2~2~1~2~1~11~16~17~185~1~2~2~2~1~1~11~16~19~195~1~2~2~2~2~1~11~16~19~203~2~1~1~21~21~215~2~1~1~1~1~21~21~21~22~225~2~1~1~1~2~21~21~21~22~235~2~1~1~2~1~21~21~21~24~245~2~1~1~2~2~21~21~21~24~253~2~1~2~21~21~265~2~1~2~1~1~21~21~26~27~275~2~1~2~1~2~21~21~26~27~285~2~1~2~2~1~21~21~26~29~295~2~1~2~2~2~21~21~26~29~303~2~2~1~21~31~315~2~2~1~1~1~21~31~31~32~325~2~2~1~1~2~21~31~31~32~335~2~2~1~2~1~21~31~31~34~345~2~2~1~2~2~21~31~31~34~353~2~2~2~21~31~365~2~2~2~1~1~21~31~36~37~375~2~2~2~1~2~21~31~36~37~385~2~2~2~2~1~21~31~36~39~395~2~2~2~2~2~21~31~36~39~40
...
Рейтинг: 0 / 0
sys_connect_by_path(rownum) с фильтрацией
    #34954959
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ModelR
Код: plaintext
1.
2.
3.
4.
5.
6.
select * from
( select level, sys_connect_by_path(rn, '~') as path1,
         sys_connect_by_path(rownum, '~') as path2
  from (select rownum rn from all_objects where rownum<= 2 ) tb
   where level in ( 3 , 5 )
      connect by level <=  5 
);
И что ты этим хотел сказать? Всё то же самое: count(*)=max(rownum from path2). Только у тебя всё гораздо туманней.

ModelRДля каждой строки, удовлетворяющей start with
level щелкает (топает вглубь)

xymboпо идее путь должен был быть таким?Нет. А правильнее: не знаю. В том-то и парадокс: мы просим у Oracle-а невозможного :) И любой его ответ - неправильный


IMHO, пока просто удачное стечение обстоятельств у него внутрях. Когда-нибудь оно кончится с ORA-07445.
Интересно, как это в 11g? :)
...
Рейтинг: 0 / 0
sys_connect_by_path(rownum) с фильтрацией
    #34955032
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElicИ что ты этим хотел сказать? Показать, как перебираются записи исходной таблицы. Вглубь сколько можно _без_ обращения к данным, лишь затем к следующей записи. ElicВсё то же самое: count(*)=max(rownum from path2). Было бы очень странно ожидать, что ORACLE нумерует строки результата как-то иначе. ElicТолько у тебя всё гораздо туманней.Э?
...
Рейтинг: 0 / 0
sys_connect_by_path(rownum) с фильтрацией
    #34955038
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElicИнтересно, как это в 11g? :)
та же фигня.
...
Рейтинг: 0 / 0
sys_connect_by_path(rownum) с фильтрацией
    #34955122
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ModelR ElicИ что ты этим хотел сказать? Показать, как перебираются записи исходной таблицы. Вглубь сколько можно _без_ обращения к данным, лишь затем к следующей записи.Ты не просёк тему. Не об этом речь. На тебе "чистое" дерево:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
select * from
( select sys_connect_by_path(rownum, '~') as path 
    from (select rownum as rn from all_objects where rownum <=  10 )
    where mod(level,  3 ) =  0 
    start with rn =  1 
    connect by rn = prior rn +  1 
);

PATH
--------------------
~ 1 ~ 1 ~ 1 
~ 1 ~ 1 ~ 1 ~ 2 ~ 2 ~ 2 
~ 1 ~ 1 ~ 1 ~ 2 ~ 2 ~ 2 ~ 3 ~ 3 ~ 3 
А теперь выслушаю :)
...
Рейтинг: 0 / 0
sys_connect_by_path(rownum) с фильтрацией
    #34955186
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SELECT	LEVEL,
		ROWNUM,
		SYS_CONNECT_BY_PATH(LEVEL, '=') pathl,
		SYS_CONNECT_BY_PATH(ROWNUM, '=') pathr,
		SYS_CONNECT_BY_PATH(LEVEL||ROWNUM, '=') pathlr
FROM	dual
WHERE LEVEL IN ( 3 , 6 , 9 )
CONNECT BY LEVEL <  10 
Row#LEVELROWNUMPATHLPATHRPATHLR131=1=2=3=1=1=1=11=21=31262=1=2=3=4=5=6=1=1=1=2=2=2=11=21=31=42=52=62393=1=2=3=4=5=6=7=8=9=1=1=1=2=2=2=3=3=3=11=21=31=42=52=62=73=83=93
...
Рейтинг: 0 / 0
sys_connect_by_path(rownum) с фильтрацией
    #34955243
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElicНа тебе "чистое" деревоДык какое ж оно дерево? деревья они с ветками:)
Код: plaintext
1.
2.
3.
4.
5.
6.
select * from
( select sys_connect_by_path(rownum, '~') as path 
    from (select  1  as rn  from dual union all select  2  as rn  from dual union all select  3  as rn  from dual  union all select  3  as rn  from dual )
    where mod(level, 3 ) =  0 
    start with rn =  1 
    connect by rn = prior rn +  1 
);
PATH ~1~1~1 ~1~1~2
...
Рейтинг: 0 / 0
sys_connect_by_path(rownum) с фильтрацией
    #34955289
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ModelRДык какое ж оно дерево? деревья они с ветками:)Не хочешь погружаться в тему - бог с тобой, я не настаиваю.
...
Рейтинг: 0 / 0
sys_connect_by_path(rownum) с фильтрацией
    #34955948
kosour
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: 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.
SQL> explain plan for
   2   select * from
   3   ( select sys_connect_by_path(rownum, '~') as path from dual t
   4   where mod(level,  3 ) =  0  and t.dummy <> 'Q5'
   5    connect by level <=  10 );

Объяснено.

SQL>  select * from table(dbms_xplan.display());

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------

-----------------------------------------------------------------------------
| Id  | Operation                       | Name | Rows  | Bytes | Cost (%CPU)|
-----------------------------------------------------------------------------
|    0  | SELECT STATEMENT                |      |      1  |   2002  |      2    ( 0 )|
|    1  |  VIEW                           |      |      1  |   2002  |      2    ( 0 )|
|    2  |   COUNT                         |      |       |       |            |
|*   3  |    FILTER                       |      |       |       |            |
|*   4  |     CONNECT BY WITHOUT FILTERING|      |       |       |            |
|    5  |      TABLE ACCESS FULL          | DUAL |      1  |      2  |      2    ( 0 )|
-----------------------------------------------------------------------------

PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

    3  - filter(MOD(LEVEL, 3 )= 0  AND "T"."DUMMY"<>'Q5')
    4  - filter(LEVEL<= 10 )

и что еще хуже:

Код: plaintext
1.
2.
3.
4.
5.
6.
select * from
( select * from dba_objects t
    where  t.owner ='UKNOWN_USER'
    start with t.object_id =  0 
    connect by  t.object_id = t.data_object_id
)

по базе, в которой нет пользователя UNKOWN_USER
выдает тот же
CONNECT BY WITHOUT FILTERING

Код: 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.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
SQL>   select * from table(dbms_xplan.display());

PLAN_TABLE_OUTPUT
-------------------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------
| Id  | Operation                         | Name        | Rows  | Bytes | Cost (%CPU)|
--------------------------------------------------------------------------------------
|    0  | SELECT STATEMENT                  |             |  57164  |  9880K|    173    ( 6 )|
|    1  |  VIEW                             |             |  57164  |  9880K|    173    ( 6 )|
|*   2  |   FILTER                          |             |       |       |            |
|*   3  |    CONNECT BY WITHOUT FILTERING   |             |       |       |            |
|*   4  |     VIEW                          | DBA_OBJECTS |  57164  |    12M|    173    ( 6 )|
|    5  |      UNION-ALL                    |             |       |       |            |
|*   6  |       FILTER                      |             |       |       |            |

PLAN_TABLE_OUTPUT
-------------------------------------------------------------------------------------------------------
|*   7  |        HASH JOIN                  |             |  62674  |  5814K|    167    ( 6 )|
|    8  |         TABLE ACCESS FULL         | USER$       |    132  |   1980  |      4    ( 0 )|
|*   9  |         TABLE ACCESS FULL         | OBJ$        |  62674  |  4896K|    161    ( 5 )|
|*  10  |        TABLE ACCESS BY INDEX ROWID| IND$        |      1  |     26  |      1    ( 0 )|
|*  11  |         INDEX UNIQUE SCAN         | I_IND1      |      1  |       |      1    ( 0 )|
|*  12  |       HASH JOIN                   |             |     12  |    552  |      7   ( 15 )|
|   13  |        TABLE ACCESS FULL          | LINK$       |     12  |    372  |      2    ( 0 )|
|   14  |        TABLE ACCESS FULL          | USER$       |    132  |   1980  |      4    ( 0 )|
|   15  |     VIEW                          | DBA_OBJECTS |  57164  |  9880K|    173    ( 6 )|
|   16  |      UNION-ALL                    |             |       |       |            |
|*  17  |       FILTER                      |             |       |       |            |

PLAN_TABLE_OUTPUT
-------------------------------------------------------------------------------------------------------
|*  18  |        HASH JOIN                  |             |  62674  |  5263K|    167    ( 6 )|
|   19  |         TABLE ACCESS FULL         | USER$       |    132  |   1980  |      4    ( 0 )|
|*  20  |         TABLE ACCESS FULL         | OBJ$        |  62674  |  4345K|    161    ( 5 )|
|*  21  |        TABLE ACCESS BY INDEX ROWID| IND$        |      1  |      8  |      1    ( 0 )|
|*  22  |         INDEX UNIQUE SCAN         | I_IND1      |      1  |       |      1    ( 0 )|
|*  23  |       HASH JOIN                   |             |     12  |    552  |      7   ( 15 )|
|   24  |        TABLE ACCESS FULL          | LINK$       |     12  |    372  |      2    ( 0 )|
|   25  |        TABLE ACCESS FULL          | USER$       |    132  |   1980  |      4    ( 0 )|
--------------------------------------------------------------------------------------

Predicate Information (identified by operation id):

PLAN_TABLE_OUTPUT
-------------------------------------------------------------------------------------------------------
---------------------------------------------------

    2  - filter("T"."OWNER"='UKNOWN_USER')
    3  - filter("T"."OBJECT_ID"="T"."DATA_OBJECT_ID")
    4  - filter("T"."OBJECT_ID"= 0 )
    6  - filter("O"."TYPE#"<> 1  AND "O"."TYPE#"<> 10  OR "O"."TYPE#"= 1  AND
              (SELECT /*+ */  1  FROM "SYS"."IND$" "I" WHERE "I"."OBJ#"=:B1 AND
              ("I"."TYPE#"= 1  OR "I"."TYPE#"= 2  OR "I"."TYPE#"= 3  OR "I"."TYPE#"= 4  OR
              "I"."TYPE#"= 6  OR "I"."TYPE#"= 7  OR "I"."TYPE#"= 9 ))= 1 )
    7  - access("O"."OWNER#"="U"."USER#")
    9  - filter("O"."LINKNAME" IS NULL AND "O"."NAME"<>'_NEXT_OBJECT' AND

PLAN_TABLE_OUTPUT
-------------------------------------------------------------------------------------------------------
              "O"."NAME"<>'_default_auditing_options_')
   10  - filter("I"."TYPE#"= 1  OR "I"."TYPE#"= 2  OR "I"."TYPE#"= 3  OR
              "I"."TYPE#"= 4  OR "I"."TYPE#"= 6  OR "I"."TYPE#"= 7  OR "I"."TYPE#"= 9 )
   11  - access("I"."OBJ#"=:B1)
   12  - access("L"."OWNER#"="U"."USER#")
   17  - filter("O"."TYPE#"<> 1  AND "O"."TYPE#"<> 10  OR "O"."TYPE#"= 1  AND
              (SELECT  1  FROM "SYS"."IND$" "I" WHERE "I"."OBJ#"=:B1 AND ("I"."TYPE#"= 1  OR
              "I"."TYPE#"= 2  OR "I"."TYPE#"= 3  OR "I"."TYPE#"= 4  OR "I"."TYPE#"= 6  OR
              "I"."TYPE#"= 7  OR "I"."TYPE#"= 9 ))= 1 )
   18  - access("O"."OWNER#"="U"."USER#")
   20  - filter("O"."LINKNAME" IS NULL AND "O"."NAME"<>'_NEXT_OBJECT' AND

PLAN_TABLE_OUTPUT
-------------------------------------------------------------------------------------------------------
              "O"."NAME"<>'_default_auditing_options_')
   21  - filter("I"."TYPE#"= 1  OR "I"."TYPE#"= 2  OR "I"."TYPE#"= 3  OR
              "I"."TYPE#"= 4  OR "I"."TYPE#"= 6  OR "I"."TYPE#"= 7  OR "I"."TYPE#"= 9 )
   22  - access("I"."OBJ#"=:B1)
   23  - access("L"."OWNER#"="U"."USER#")

Note
-----
   - 'PLAN_TABLE' is old version

 64  строк выбрано.

SQL> 

Игры с
Код: plaintext
1.
2.
alter session Set "_old_connect_by_enabled"=true|false;
alter session Set "_optimizer_connect_by_cost_based"=true|false;
к успеху не привели, хотя ORA-600 и получил. Кроме того, оракл сказал, что не знает функции sys_connect_by_path :)
...
Рейтинг: 0 / 0
sys_connect_by_path(rownum) с фильтрацией
    #34955973
Jannny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kosourпо базе, в которой нет пользователя UNKOWN_USER
выдает тот же
CONNECT BY WITHOUT FILTERINGА что в этом странного?

kosour
Код: plaintext
alter session Set "_old_connect_by_enabled"=true;
оракл сказал, что не знает функции sys_connect_by_path :)Вас это удивляет?

kosourИгры с
...
к успеху не привелиА какого успеха в данном случае Вы добивались???
...
Рейтинг: 0 / 0
sys_connect_by_path(rownum) с фильтрацией
    #34956304
kosour
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Jannny
А какого успеха в данном случае Вы добивались???

Чтобы дерево строилось на основе моих данных (т.е. я хочу построить дерево только на основе объектов пользователя UNKOWN_USER). То, что этот запрос выполняется долго - это полбеды, а вот то, что он возвращает неверные данные...

Код: 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.
37.
38.
drop table a;
create table a as
select owner,object_name,object_type from dba_objects
union all
select distinct owner, object_type,null from dba_objects;

create index i#a on a(owner);

begin 
dbms_stats.gather_table_stats(ownname => user, tabname => 'A',estimate_percent =>  100 ,cascade => true); 
end;
/

select count(*) from (
  select LEVEL, ROWNUM, sys_connect_by_path(OBJECT_NAME, '->'), a.* from a
      where   a.owner ='QS_WS'
      start with A.OBJECT_TYPE IS NULL
      connect by  PRIOR A.OBJECT_NAME = A.OBJECT_TYPE
 );

SQL> /

  COUNT(*)
----------
       2255 

 select count(*) from (
  select LEVEL, ROWNUM, sys_connect_by_path(OBJECT_NAME, '->'), a.* from (select * from a
      where   a.owner ='QS_WS' ) a
      start with A.OBJECT_TYPE IS NULL  
      connect by  PRIOR A.OBJECT_NAME = A.OBJECT_TYPE
  );

  COUNT(*)
----------
         59 

SQL> 
...
Рейтинг: 0 / 0
sys_connect_by_path(rownum) с фильтрацией
    #34956351
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kosourЧтобы дерево строилось на основе моих данных (т.е. я хочу построить дерево только на основе объектов пользователя UNKOWN_USER). То, что этот запрос выполняется долго - это полбеды, а вот то, что он возвращает неверные данные...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
      where   a.owner ='QS_WS'
      start with A.OBJECT_TYPE IS NULL
      connect by  PRIOR A.OBJECT_NAME = A.OBJECT_TYPE
----------
       2255 

      where   a.owner ='QS_WS' ) a
      start with A.OBJECT_TYPE IS NULL  
      connect by  PRIOR A.OBJECT_NAME = A.OBJECT_TYPE
----------
         59 
Это разные запросы, что говорит о том, что ты не понимаешь иерархических запросов, но зачем-то лезешь в чужую тему со своими блохами.
В твоей теме я, может быть, бы объяснил тебе, в чём ты лопух.
...
Рейтинг: 0 / 0
25 сообщений из 54, страница 1 из 3
Форумы / Oracle [игнор отключен] [закрыт для гостей] / sys_connect_by_path(rownum) с фильтрацией
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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