Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.01.28;
Скачать: CL | DM;

Вниз

Проблема с 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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.008 c
14-90383
mashinist
2001-11-28 00:46
2002.01.28
Апроксимация графика функции.


3-90224
EternalWonderer
2001-12-24 17:20
2002.01.28
Проблема с count(*) в joined запросе


14-90372
Digitman
2001-12-03 15:27
2002.01.28
Win32.Invictus + I-Warm.Toil !!!!!!!!!


14-90364
Olgerd
2001-12-02 19:10
2002.01.28
Мелочи. To Merlin.


14-90358
Никто
2001-12-03 03:28
2002.01.28
TP7