Форум: "Базы";
Текущий архив: 2002.01.28;
Скачать: [xml.tar.bz2];
ВнизПроблема с join в connect by запросе. Найти похожие ветки
← →
EternalWonderer (2001-12-25 10:01) [0]Да ... ларчик просто открывался .... А вот продолжение этой задачки:
Дано: Таблицы 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(+);
всё выводится замечательно, но сначала выдаются все родители первого уровня, затем второго и т.д.
Заранее большое спасибо!
← →
Mick (2001-12-25 10:15) [1]Oracle по умолчанию агрегаты сортирует глядя в поля из GropBy. Боюсь что для сохранения первоначального порядка дерева нужен связанный подзапрос
← →
EternalWonderer (2001-12-25 10:42) [2]А нельзя ли привести маленький пример связанного подзапроса, или хотя бы в каком разделе справки об этом почитать? В разделе Hierarchical Queries справки Oracle о связанных подзапросах на слова ...
← →
Mick (2001-12-25 11:16) [3]В древовидном запросе в список полей добавь выражение, вычисляющее количество
Select id, (Select count(det_id) from DetailTable where ParentId = Id) as Counts
From MasterTable
← →
EternalWonderer (2001-12-25 11:44) [4]Спасибо за помощь и удачи!
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.01.28;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.004 c