![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема с join в connect by запросе. [Oracle, ]
EternalWonderer © (2001-12-25 10:01:00)Да ... ларчик просто открывался .... А вот продолжение этой задачки:
Дано: Таблицы CATALOG(ID,PARENT,CAPTION), LIST(ID_CAT,OTHER_FIELDS)
Задача: Присоединить данные второго запроса так, чтобы не нарушился порядок сортировки строк в первом запросе:
1) select ID,(LEVEL-1) L_PARENT,CAPTION
from CATALOG start with PARENT=0 connect by PRIOR ID=PARENT;
2) SELECT ID_CAT,count(*) FROM LIST group by ID_CAT;
Примечание. При выполнении отдельно первого запроса за каждым родителем выводятся его потомки. При попытке присоединить вторую таблицу вот так:
create view CAT as select ID,(LEVEL-1) L_PARENT,CAPTION
from CATALOG start with PARENT=0 connect by PRIOR ID=PARENT;
select ID,L_PARENT,CAPTION,COUNTS
from CAT,(select ID_CAT,count(*) COUNTS from LIST group by ID_CAT) where ID=TYPE_SI(+);
всё выводится замечательно, но сначала выдаются все родители первого уровня, затем второго и т.д.
Заранее большое спасибо!
EternalWonderer (2001-12-25 11:44:00) [1]Спасибо за помощь и удачи!
Mick (2001-12-25 11:16:00) [2]В древовидном запросе в список полей добавь выражение, вычисляющее количество
Select id, (Select count(det_id) from DetailTable where ParentId = Id) as Counts
From MasterTable
EternalWonderer (2001-12-25 10:42:00) [3]А нельзя ли привести маленький пример связанного подзапроса, или хотя бы в каком разделе справки об этом почитать? В разделе Hierarchical Queries справки Oracle о связанных подзапросах на слова ...
Mick (2001-12-25 10:15:00) [4]Oracle по умолчанию агрегаты сортирует глядя в поля из GropBy. Боюсь что для сохранения первоначального порядка дерева нужен связанный подзапрос