O
O
Oleg Seledets2019-06-15 16:08:25
SQL
Oleg Seledets, 2019-06-15 16:08:25

How to write a recursive SQL query?

There are three tables

spoiler
Таблица каталога продуктов
create table catalog (cid number primary key, -- id раздела
 par_cid number references catalog, -- ссылка на родительский раздел
 rname varchar2(400), -- наименование раздела
 rdescr varchar2(4000), -- описание
 rcdate date -- дата создания
 );
Таблица продуктов
create table products (pid number primary key, -- id продукта
 rcid number references catalog, -- ссылка на каталог
 pname varchar2(500), -- наименование продукта
 pdescr varchar2(4000), -- спецификация
 punit number references units, -- единица измерения
 pper number references persons -- ответственный
 );
Таблица движения продуктов
create table records (rpid number references products, -- продукт
 rdate date, -- дата операции
 incoming varchar2(2) default '1', -- поступление '1', расход '0'
 quantity number, -- количество
 rate number -- цена в рублях
 );

how to get output
like this
spoiler
<Наименование раздела каталога уровня1> || Поступление. Руб. || Расход. Руб
...
<Наименование раздела каталога уровня(K-1)> || Поступление. Руб. || Расход. Руб
<Наименование раздела каталога уровня(K)> || Поступление. Руб. || Расход. Руб
<Наименование Продукта1 этого раздела> || Поступление. Руб. || Расход. Руб || Поступление. Количество || Расход. Количество || Остаток
...
<Наименование ПродуктаN этого раздела> || Поступление. Руб. || Расход. Руб || Поступление. Количество || Расход. Количество || Остаток
<Наименование раздела каталога уровня(K)> || Поступление. Руб. || Расход. Руб
<Наименование Продукта1 этого раздела> || Поступление. Руб. || Расход. Руб || Поступление. Количество || Расход. Количество || Остаток
...
<Наименование ПродуктаN этого раздела> || Поступление. Руб. || Расход. Руб || Поступление. Количество || Расход. Количество || Остаток
<Наименование раздела каталога уровня1> || Поступление. Руб. || Расход. Руб
... и так далее аналогично

if the number of hierarchies is unlimited?

Answer the question

In order to leave comments, you need to log in

1 answer(s)
D
d-stream, 2019-06-15
@oleja1ee7

either use cte recursive if the subd can, or in a popular way - in cycles

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question