Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Иерархический запрос / 10 сообщений из 10, страница 1 из 1
22.05.2017, 15:28
    #39457454
Sergyn4ik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Иерархический запрос
Добрый день :-)

Есть иерархический запрос. Как узнать количество дочерних записей, и, предположим, что каждое дочернее поле, содержит столбец (number), возможно ли подсчитать все числа дочерних полей?
...
Рейтинг: 0 / 0
22.05.2017, 15:53
    #39457491
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Иерархический запрос
Sergyn4ik,

Пример входных данных и ожидаемого результата.
connect_by_root, count.
...
Рейтинг: 0 / 0
22.05.2017, 16:24
    #39457526
Sergyn4ik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Иерархический запрос
env,

Предположим, есть иерарх.запрс:

Россия
--Москва(город)
----Ленина(улица)
----Улица№2

Есть таблица объектов, тут вроде разобрался и узнал, сколько и у какой улицы объектов.
Вопрос. Как суммировать все объекты для москвы, и после еще и для россии (Пусть будет N городов и M улиц)
...
Рейтинг: 0 / 0
22.05.2017, 16:37
    #39457538
dbms_photoshop
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Иерархический запрос
Sergyn4ik,

Твой препод троллит тебя. Даже если тебе дать готовое решение, ты все равно не осилишь его понять.
Код: 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.
SQL> with t(id, parent_id, name)
  2       as (select 1,null,'Russia'from dual
  3           union all select 2,1,'Moscow'from dual
  4           union all select 3,2,'Lenina'from dual
  5           union all select 4,2,'Street2'from dual),
  6       h
  7       as (select id,
  8                  parent_id,
  9                  name,
 10                  level l,
 11                  rownum rn
 12             from t
 13           start with parent_id is null
 14           connect by parent_id = prior id)
 15  select h0.*, count(*) over (order by s range between current row and x - 1e-38 following) cnt
 16    from (select h.*,
 17                 power(10, 1 - l) x,
 18                 sum(power(10, 1 - l)) over (order by rn) s
 19            from h) h0;

        ID  PARENT_ID NAME             L         RN          X          S        CNT
---------- ---------- ------- ---------- ---------- ---------- ---------- ----------
         1            Russia           1          1          1          1          4
         2          1 Moscow           2          2         .1        1.1          3
         3          2 Lenina           3          3        .01       1.11          1
         4          2 Street2          3          4        .01       1.12          1

SQL>

Вместо константы 10 используй greatest(M, N).
...
Рейтинг: 0 / 0
22.05.2017, 16:44
    #39457546
Sergyn4ik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Иерархический запрос
dbms_photoshop,

ЧЕЕЕ ЗА ТРЭЭШ
...
Рейтинг: 0 / 0
22.05.2017, 17:08
    #39457562
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Иерархический запрос
Sergyn4ikenv,

Предположим, есть иерарх.запрс:

Россия
--Москва(город)
----Ленина(улица)
----Улица№2
Sergyn4ikЧЕЕЕ ЗА ТРЭЭШ?

Не увидел в приведённых буковках иерархического запроса.
Приведите образец входных данных в with .. (select .. from dual union all ...) и ожидаемый результат.
...
Рейтинг: 0 / 0
22.05.2017, 18:44
    #39457645
ora601
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Иерархический запрос
dbms_photoshop,

cnt - 1


С подзапросом :

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
 with t(id, parent_id, name)
        as (select 1,null,'Russia'from dual
             union all select 2,1,'Moscow'from dual
             union all select 3,2,'Lenina'from dual
             union all select 4,2,'Street2' from dual
             union all select 6, null, 'US' from dual
             union all select 7,6, 'Arizona' from dual
             union all select 5,1, 'St. Peter' from dual
),
         
       h  as (select id,
                    parent_id,
                    name,
                   level l,
                   rownum rn,
                   prior sys_connect_by_path(name,'/') root_path,
                   sys_connect_by_path(name,'/') path
              from t
            start with parent_id is null
           connect by parent_id = prior id)
      
           select h2.*, (SELECT COUNT(*) FROM h h1 WHERE h1.root_path LIKE h2.path||'%') cnt from h h2



ТС - C учетом около ~0 знаний, я бы так не реагировал на почти готовый разжеваный пример ...
...
Рейтинг: 0 / 0
22.05.2017, 18:59
    #39457651
dbms_photoshop
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Иерархический запрос
ora601,

Собственно все фантазии на тему собраны в Агрегация сумм в иерархических запросах .

А ТСа можно поблагодарить за честный ответ, так что больше не осталось сомнений в адекватности вопрошающего.
...
Рейтинг: 0 / 0
23.05.2017, 09:40
    #39457767
Sergyn4ik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Иерархический запрос
Да, я начинающий. Может поэтому и обратился на форум)

Я введу к тому, а если у нас будет 1 млн записей? Их же не описать именованном подзапросе
...
Рейтинг: 0 / 0
23.05.2017, 11:42
    #39457866
env
env
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Иерархический запрос
Sergyn4ik именованном подзапросе
envПример входных данных
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Иерархический запрос / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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