Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.07.10;
Скачать: [xml.tar.bz2];

Вниз

Иерархия в 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.44 MB
Время: 0.009 c
14-31411
NickName
2003-06-25 17:34
2003.07.10
Репликации


1-31244
race1
2003-06-28 19:33
2003.07.10
menu vs. shift


1-31223
Alibaba
2003-06-27 16:29
2003.07.10
TSpeedButton


1-31174
Edvard
2003-06-27 14:56
2003.07.10
Проблема с считыванием из файла и заполнением ListBox


6-31380
Nigger
2003-04-27 19:09
2003.07.10
WinSock + Threads!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский