Re: Иерархический запрос
- From
- Алексей Проценко ()
- To
- Konstantin Nagaev ()
- Date
- 2002-07-11T14:14:36Z
- Area
- RU.DBMS.ORACLE
From: "Алексей Проценко" <avproc@ruyan.ru>
Да, прочел. Идея действительно интересная.
И когда мне приведется создавать древовоидные структуры,
непременно попробую. Но нынче мне это не светит.
Я всего лишь дополняю функциональность существующего приложения
разработанного на основе существующей структуры.
И хотя имею право ее отчасти менять, каждое такое действие
имеет реальную стоимость в человеко-часах, которые МНЕ придется
потратить
на перекодирование. Так что пока хорошая жизнь откладывается в долгий
ящик.
Да и деревце обещает не превышать несколько тысячь записей. Вот
колонка сумм
расти будет беспрестанно и неограниченно.
С уважением Алексей П.
"Konstantin Nagaev" <Konstantin.Nagaev@p14.f1873.n5020.z2.fidonet.org>
сообщил/сообщила в новостях следующее:
news:1026376394@p14.f1873.n5020.z2.fidonet.ftn...
> Hello Алексей!
>
> 10 Jul 02 18:33, Алексей Проценко wrote to Konstantin Nagaev:
>
> АП> From: "Алексей Проценко" <avproc@ruyan.ru>
>
> АП> Спасибо, уже прорубил. Получилось вот что:
>
> АП> select h1.id, h1.parent_id, sum(hs.sum)
> АП> from
> АП> hier h1,
> АП> (select h.id, nvl(s.SUM,0) sum
> АП> from
> АП> hier h,
> АП> summ s
> АП> where h.ID = s.HIER_ID (+)) hs
> АП> where h1.id in (select h2.ID
> АП> from hier h2
> АП> connect by prior h2.id =
h2.parent_id
> АП> start with h2.id = hs.id)
> АП> group by h1.id, h1.parent_id
>
> АП> С функцией по скорости не сравнить.
>
> АП> Но осталась проблемка с сохранением древовидной сортировки.
> АП> Ни в подзапрос, ни в представление упрятать этот запрос не
удается,
> АП> так чтоб сказать сказать ему select * from (....) connect by
....
> АП> start with...
> АП> и получить правильное деревце. Таблицу (snapshort), делать не
хочется
> АП> (может просто не дозрел еще до этого).
> АП> Подскажите, пож-ста, существуют ли какие-нибудь SQL - решения
этой
> АП> проблемы?
> Ты точно прочёл?
> В той сруктуре, которая там описана, скорость на выборку получается
просто
> пулемётная.
> И эту проблему ты решил бы легко.
> Там заморочки только с обновлением номеров узлов.
> Но иерархические выборки потом получаются суперскоростные.
> А иерархический SQL не очень-то быстро всё-таки работает.
> У меня на 500000 записях с 5-6 уровнями работало очень напряжно,
даже при
> условии ограничения диапазона.
>
> АП> "Konstantin Nagaev"
> АП> <Konstantin.Nagaev@p14.f1873.n5020.z2.fidonet.org>
> АП> сообщил/сообщила в новостях следующее:
> АП> news:1026308373@p14.f1873.n5020.z2.fidonet.ftn...
> >> Hello Алексей!
> >>
> >> 09 Jul 02 13:07, Алексей Проценко wrote to All:
> >>
> >> АП> From: "Алексей Проценко" <avproc@ruyan.ru>
> >>
> >> АП> Есть иерархическая табличка (статей) + табличка сумм (по
> АП> статьям).
> >> Посмотри, не поможет ли тебе например такой подход
> >> http://www.intelligententerprise.com/001020/celko.shtml
> >>
> >> Best wishes, Konstantin.
> >>
>
>
> АП> --- ifmail v.2.15dev5
> АП> * Origin: MTU-Intel ISP (2:5020/400)
>
> Best wishes, Konstantin.
>
--- ifmail v.2.15dev5
* Origin: MTU-Intel ISP (2:5020/400)
SEEN-BY: 50/520 523 993 51/7 450/102 159 452/25 461/33 43 640 463/220 257
SEEN-BY: 464/34 36 465/204 466/20 467/70 95 469/125 999 550/5068 4615/21
SEEN-BY: 4623/55 4625/8 9 4626/6 4631/13 4641/444 4643/19 4653/10 4657/50
SEEN-BY: 5000/44 76 5000 5001/27 77 211 5002/5002 5003/9 34 5004/16 5005/44
SEEN-BY: 5006/1 5007/1 5009/9 5010/70 77 222 5011/13 5012/1 5015/4 28
SEEN-BY: 5019/22 28 5020/20 37 52 52 69 79 104 114 115 118 128 150 175 194
SEEN-BY: 5020/238 238 348 362 392 400 400 496 642 647 732 753 758 760 768
SEEN-BY: 5020/870 902 921 982 1057 1100 1169 1200 1212 1234 1301 1423 1535
SEEN-BY: 5020/1626 1642 1694 1873 1930 1951 2013 2020 2200 3637 4400 4441
SEEN-BY: 5021/3 29 5022/5 5023/11 5024/11 5025/3 5026/14 45 78 5028/51
SEEN-BY: 5029/16 50 5030/115 175 195 251 382 448 613 757 920 953 1016 1023
SEEN-BY: 5030/1400 1900 5031/26 5032/6 16 5033/1 5034/1 5035/10 5036/1 13
SEEN-BY: 5037/21 5038/7 5040/33 47 5041/4 5042/8 5045/7 42 5049/1 64 125
SEEN-BY: 5050/9 5051/15 35 5052/4 5053/16 18 777 5054/1 9 10 30 37 50 79
SEEN-BY: 5056/16 5057/1 5058/24 1000 5059/10 5060/88 90 5061/6 15 5063/27 60
SEEN-BY: 5064/5 7 35 36 5066/18 5069/128 5070/26 66 5071/1 5075/10 5077/3
SEEN-BY: 5078/20 5079/36 45 49 5080/80 111 301 1003 5081/2 3 5082/6 5083/13
SEEN-BY: 5083/21 5085/13 75 5090/2 91 1029 5091/100 5093/27 5095/1 5100/8
SEEN-BY: 5100/113 6009/8 6023/1 6028/1 6035/1 6037/1 6083/1
PATH: 5020/400 238 52 5054/1 79