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

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

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

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

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

Есть таблица объектов, тут вроде разобрался и узнал, сколько и у какой улицы объектов.
Вопрос. Как суммировать все объекты для москвы, и после еще и для россии (Пусть будет N городов и M улиц)
...
Рейтинг: 0 / 0
Иерархический запрос
    #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
Иерархический запрос
    #39457546
Sergyn4ik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dbms_photoshop,

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

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

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

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

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

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

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


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