Здравствуйте)
Дано три таблицы:
--Таблица каталога продуктов
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 -- цена в рублях
);
Требуется написать sql запрос для вывода примерно в таком виде:
<Наименование раздела каталога уровня1> || Поступление. Руб. || Расход. Руб
...
<Наименование раздела каталога уровня(K-1)> || Поступление. Руб. || Расход. Руб
<Наименование раздела каталога уровня(K)> || Поступление. Руб. || Расход. Руб
<Наименование Продукта1 этого раздела> || Поступление. Руб. || Расход. Руб || Поступление. Количество || Расход. Количество || Остаток
...
<Наименование ПродуктаN этого раздела> || Поступление. Руб. || Расход. Руб || Поступление. Количество || Расход. Количество || Остаток
<Наименование раздела каталога уровня(K)> || Поступление. Руб. || Расход. Руб
<Наименование Продукта1 этого раздела> || Поступление. Руб. || Расход. Руб || Поступление. Количество || Расход. Количество || Остаток
...
<Наименование ПродуктаN этого раздела> || Поступление. Руб. || Расход. Руб || Поступление. Количество || Расход. Количество || Остаток
<Наименование раздела каталога уровня1> || Поступление. Руб. || Расход. Руб
... и так далее аналогично
Расчет для разделов должен выполняться в соответствии с иерархией. Количество уровней иерархии не ограничено.
Вывел все каталоги:
SELECT cid, par_cid, rname
FROM catalog
START WITH par_cid is null
CONNECT BY PRIOR cid = par_cid
ORDER BY cid;
Глубже в рекурсию не знаю, как написать запрос. Можете подсказать, как дальше?