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

Вниз

Иерархия в IB   Найти похожие ветки 

 
Seven ©   (2003-06-15 10:23) [0]

Ув. коллеги. Есть таблица со след. структурой
GOODS
(ID NUMERIC,
NAME VARCHAR(128),
MASTER_ID NUMERIC REFERENCES GOODS(ID)
)
Если есть след. записи:
1 Комплектующие NULL
2 Мат. плата 1
3 IWill 2
4 BD v133 3

Хотелось бы в Select-e выводить так:
Комплектующие NULL\Мат. плата\IWill\BD v133
В Оракле есть прекрасная конструкция
Connect by prior, Start with
Можно ли как-то средствами IB это решить?
Хотя бы выводить верхний уровень + последний ?


 
Sergey Masloff   (2003-06-15 10:34) [1]

Seven ©
>В Оракле есть прекрасная конструкция
>Connect by prior, Start with
За наличие таких возможностей в Oracle приходится платить (не только и не столько деньгами)
В IB такую функциональность можно достичь используя рекурсию в хранимой процедуре.


 
Sergey Masloff   (2003-06-15 10:55) [2]

Что-то вроде этого:
CREATE PROCEDURE DICTI_DOWN (
PLEVEL INTEGER,
PPARENTISN NUMERIC(15,4))
RETURNS (
F_LEVEL INTEGER,
F_ISN NUMERIC(15,4),
F_PARENTISN NUMERIC(15,4),
F_SHORTNAME VARCHAR(40)
)
AS
begin
for select
d.ISN ,
d.PARENTISN ,
d.SHORTNAME
from dicti d
where d.parentisn = :pPARENTISN

into
:F_ISN ,
:F_PARENTISN ,
:F_SHORTNAME

do
begin
F_LEVEL=pLevel;
suspend;
for select
F_LEVEL ,
F_ISN ,
F_PARENTISN,
F_SHORTNAME
from DICTI_DOWN( :F_LEVEL + 1, :F_ISN)
into
:F_LEVEL ,
:F_ISN ,
:F_PARENTISN ,
:F_SHORTNAME
do
begin
suspend;
end
end
end


 
Seven ©   (2003-06-16 11:33) [3]

Спасибо большое,
все получилось - оформир
процедурой (базу для процедуры
взял здесь же из статьи про иерархию)
и вызываю в Делфе на CalcFields - работает быстро



Страницы: 1 вся ветка

Текущий архив: 2003.07.10;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.019 c
14-31423
Axis_of_Evil
2003-06-25 11:20
2003.07.10
Lindows... А что это за девушка и где она живет ...


1-31355
Anonimus
2003-06-27 15:42
2003.07.10
TBitmap в array of Byte


3-31137
Avreliy
2003-06-14 15:02
2003.07.10
Record already locked by this session


7-31537
Fotog
2003-04-27 18:33
2003.07.10
Дозвон


1-31269
Пубертанец
2003-06-30 09:57
2003.07.10
Как узнать, какие есть свойства (property) у класса?