Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / sys_connect_by_path(rownum) с фильтрацией / 25 сообщений из 54, страница 1 из 3
20.11.2007, 20:00
    #34953434
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sys_connect_by_path(rownum) с фильтрацией
Код: 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
21.11.2007, 07:43
    #34953873
SQLap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sys_connect_by_path(rownum) с фильтрацией
клевая конструкция))
...
Рейтинг: 0 / 0
21.11.2007, 11:39
    #34954623
тобобетобор
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sys_connect_by_path(rownum) с фильтрацией
хм, а как это работает ?
...
Рейтинг: 0 / 0
21.11.2007, 11:42
    #34954640
bI!
bI!
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sys_connect_by_path(rownum) с фильтрацией
тобобетоборхм, а как это работает ?
По сети... но может и локально :)
...
Рейтинг: 0 / 0
21.11.2007, 11:42
    #34954641
Jannny
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sys_connect_by_path(rownum) с фильтрацией
тобобетоборхм, а как это работает ? ElicПарадоксально
...
Рейтинг: 0 / 0
21.11.2007, 11:46
    #34954658
xymbo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sys_connect_by_path(rownum) с фильтрацией
ltrim :)
Только для меня пока неясно, почему "несочленимого"?
...
Рейтинг: 0 / 0
21.11.2007, 11:58
    #34954720
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sys_connect_by_path(rownum) с фильтрацией
xymboltrim :)Ты не в теме.
xymboТолько для меня пока неясно, почему "несочленимого"?Путь должен быть сформирован на наборе данных до фильтрации.
Отсюда парадокс: нам нужен rownum до фильтрации, но вычислен rownum может быть только после фильтрации, когда тех строк уже нет :)
Oracle любопытно из этой ситуации вышел. А мог(должен?) бы и выругаться :)
...
Рейтинг: 0 / 0
21.11.2007, 12:04
    #34954754
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sys_connect_by_path(rownum) с фильтрацией
ElicПуть должен быть сформирован на наборе данных до фильтрации.
Отсюда парадокс: нам нужен rownum до фильтрации, но вычислен rownum может быть только после фильтрации, когда тех строк уже нет :)
Oracle любопытно из этой ситуации вышел. А мог(должен?) бы и выругаться :)Момент вычисления Ораклом результата функции для вывода в поле запроса всегда был для меня загадкой - обычно он откладывался на самый последний момент. Ну и количество обращений к этой же функции
...
Рейтинг: 0 / 0
21.11.2007, 12:12
    #34954801
xymbo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sys_connect_by_path(rownum) с фильтрацией
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
21.11.2007, 12:15
    #34954812
OraDen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sys_connect_by_path(rownum) с фильтрацией
Код: 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
21.11.2007, 12:16
    #34954814
ModelR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sys_connect_by_path(rownum) с фильтрацией
тобобетоборхм, а как это работает ?
Похоже по принципу тихо сам с собою...
Для каждой строки, удовлетворяющей start with
level щелкает (топает вглубь), соответсвенно path копиться,
where ( без джойнов работает после иерархии) сгенрированные данные отсеивает - соответсвенно rownum не щелкает.
...
Рейтинг: 0 / 0
21.11.2007, 12:20
    #34954832
OraDen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sys_connect_by_path(rownum) с фильтрацией
Код: 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
21.11.2007, 12:22
    #34954844
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sys_connect_by_path(rownum) с фильтрацией
OraDen[src oracle][/src]
И что? Фильтрация-то где?
...
Рейтинг: 0 / 0
21.11.2007, 12:24
    #34954847
ModelR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sys_connect_by_path(rownum) с фильтрацией
Код: 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
21.11.2007, 12:47
    #34954959
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sys_connect_by_path(rownum) с фильтрацией
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
21.11.2007, 13:01
    #34955032
ModelR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sys_connect_by_path(rownum) с фильтрацией
ElicИ что ты этим хотел сказать? Показать, как перебираются записи исходной таблицы. Вглубь сколько можно _без_ обращения к данным, лишь затем к следующей записи. ElicВсё то же самое: count(*)=max(rownum from path2). Было бы очень странно ожидать, что ORACLE нумерует строки результата как-то иначе. ElicТолько у тебя всё гораздо туманней.Э?
...
Рейтинг: 0 / 0
21.11.2007, 13:03
    #34955038
Timm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sys_connect_by_path(rownum) с фильтрацией
ElicИнтересно, как это в 11g? :)
та же фигня.
...
Рейтинг: 0 / 0
21.11.2007, 13:22
    #34955122
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sys_connect_by_path(rownum) с фильтрацией
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
21.11.2007, 13:35
    #34955186
sys_connect_by_path(rownum) с фильтрацией
Код: 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
21.11.2007, 13:46
    #34955243
ModelR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sys_connect_by_path(rownum) с фильтрацией
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
21.11.2007, 13:54
    #34955289
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sys_connect_by_path(rownum) с фильтрацией
ModelRДык какое ж оно дерево? деревья они с ветками:)Не хочешь погружаться в тему - бог с тобой, я не настаиваю.
...
Рейтинг: 0 / 0
21.11.2007, 16:29
    #34955948
kosour
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sys_connect_by_path(rownum) с фильтрацией
Код: 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
21.11.2007, 16:35
    #34955973
Jannny
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sys_connect_by_path(rownum) с фильтрацией
kosourпо базе, в которой нет пользователя UNKOWN_USER
выдает тот же
CONNECT BY WITHOUT FILTERINGА что в этом странного?

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

kosourИгры с
...
к успеху не привелиА какого успеха в данном случае Вы добивались???
...
Рейтинг: 0 / 0
21.11.2007, 18:02
    #34956304
kosour
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sys_connect_by_path(rownum) с фильтрацией
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
21.11.2007, 18:14
    #34956351
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sys_connect_by_path(rownum) с фильтрацией
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
Форумы / Oracle [игнор отключен] [закрыт для гостей] / sys_connect_by_path(rownum) с фильтрацией / 25 сообщений из 54, страница 1 из 3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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