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

Вниз

Дерево БД   Найти похожие ветки 

 
Itonix ©   (2007-02-19 16:03) [0]

Предположим есть три связаных таблицы *Интербейз):
Parent:
id,Name
Middle
id; id_parent; name;
Child:
id; id_midle; name;
не могу придумать алгоритм отображения этой связи в виде дерева , если  учесть вариант того, что пользователь моежт просматривать дерево в двух режимах:
1) когда видно связь Parent->Middle->Child
2) Parent->child
что-то я совсем не соображаю :((((
подскажите плиз.
данніе будут строиться из одного запроса вида
select parent.name, middle.name,child.name from parent,childe,middle
where ... (тут их соединяем)


 
Itonix ©   (2007-02-19 16:04) [1]

дополнение- я использую компонент ElTree


 
Sergey13 ©   (2007-02-19 16:15) [2]

> [0] Itonix ©   (19.02.07 16:03)

Мое ИМХО - при ограниченной вложенности использование дерева - только дополнительные тормоза.


 
Itonix ©   (2007-02-19 16:17) [3]

надо так сделать. (задача так требует). что б видно біло двух или трех уровневое дерево


 
Sergey13 ©   (2007-02-19 16:21) [4]

Три грида - нагляднее некуда, ИМХО конечно. С ElTree не работал, так что не помогу.


 
Itonix ©   (2007-02-19 16:26) [5]

да я б и сам не против. да вот надо именно так сделать. два или три уровня дерева строить из одного запроса


 
Сергей М. ©   (2007-02-19 17:17) [6]


> два или три уровня дерева строить из одного запроса


Храни все уровни одного и того же дерева в одной и той же таблице, тогда и вопрос сам по себе отпадет.

Твоя "трехтабличная" структурная схема ничем не оправдана, либо у тебя не древовидная, а сетевая структура.


 
Val ©   (2007-02-19 17:26) [7]

При невозможности перестроить схему бд - напишите 2 соотв. "деревянных"(ну нет в классическом дереве понятия middle - ибо определить его нельзя, узлы соотносятся только как parent-child) обзора и их уж вяжите к компоненту при выборе структуры отображения пользователем.


 
Empleado ©   (2007-02-19 17:31) [8]

1)
> Храни все уровни одного и того же дерева в одной и той же
> таблице

2) либо объединяй три таблицы в одну с форматом id, id_parent, name
3) либо, не вижу проблемы представить дерево из трех таблиц, любым методом: например, как вариант, пробегая по первой таблице - создаешь первый уровень, затем по второй - второй уровень, затем третий; либо же делаешь мастер-детэйл и строишь уровни дерева.

ПС. Что такое ElTree - не знаю, возможно там все сложнее.


 
Itonix ©   (2007-02-19 18:09) [9]

вот решение проблемы для ЕлТри дерева. три таблицы Компания - ТМ - Продукт (вкус+вес). Выбираеться одним запросом
результ запроса лежит в Квери Sales

var i:Smallint;
   tm,comp:string;
   trItem2,trItem, ParentItem:TElTreeItem;
begin
comp:="";tm:="";
trBrands.Items.Clear;
i:=0;
ibSales.First;

comp:="";tm:="";
//------------------
while not ibSales.Eof do
begin
 if ibSAles.FieldByName("Name_comp").Asstring<>comp then
  begin
   comp:=ibSAles.FieldByName("Name_comp").Asstring;
   ParentItem:=trBrands.Items.AddItem(nil);
   ParentItem.Text:=comp;
   ParentItem.Tag:=ibSAles.FieldByName("KOD_COMP").AsInteger;
  end
else
begin
 if tm<>ibSales.FieldByName("NAME_TM").AsString then
 begin
  trItem:=trBrands.Items.AddChild(ParentItem,ibSAles.FieldByName("NAME_TM").AsStri ng);
  trItem.Tag:=ibSAles.FieldByName("KOD_TM").AsInteger;
 end;

    if ibSAles.FieldByName("Name_tm").Asstring<>tm then
  begin
   tm:=ibSAles.FieldByName("Name_tm").Asstring;
      trItem2:=trBrands.Items.AddChild(trItem,ibSAles.FieldByName("NAME_FLV").AsString );
      trITem2.Text:=ibSAles.FieldByName("NAME_FLV").AsString+" [ "+ibSAles.FieldByName("Ves").AsString+" ]";
     trItem2.Tag:=ibSAles.FieldByName("KOD_VES").AsInteger;
  end
    else
    begin
     trItem2:=trBrands.Items.AddChild(trItem,ibSAles.FieldByName("NAME_FLV").AsString );
     trITem2.Text:=ibSAles.FieldByName("NAME_FLV").AsString+" [ "+ibSAles.FieldByName("ves").AsString+" ]";
    trItem2.Tag:=ibSAles.FieldByName("KOD_VES").AsInteger;
     end;
end;
 ibSales.Next;
end;
ibSales.First;

наконецто заработало



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

Форум: "Базы";
Текущий архив: 2007.05.13;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.052 c
3-1172124141
userDelf
2007-02-22 09:02
2007.05.13
Проблема работы приложения на компах кроме моего


2-1176971469
pasha_golub
2007-04-19 12:31
2007.05.13
Не могу закрыть MDIChild окно


2-1177223988
Doom_2
2007-04-22 10:39
2007.05.13
array of string


3-1172123744
Fantasy
2007-02-22 08:55
2007.05.13
Закладка InterBase Admin не видна


4-1166178056
niko
2006-12-15 13:20
2007.05.13
Создание окна с помощью CreateWindowEx в Си





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский