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

Вниз

Обход связанных 2-х таблиц - с шапкой и детализацией   Найти похожие ветки 

 
Sergeyy ©   (2002-10-14 12:10) [0]

Есть 2 таблицы рецептов:
1. Заголовочная. MASTER(ID, INGRED_ID, UNIT_ID, DAT);("рецепт")
2. Детализация. DETAILS(MASTER_ID, INGRED_ID, UNIT_ID, AMOUNT);
MASTER.ID = DETAILS.MASTER_ID
Проблема в том, что каждый ингредиент, участвующий в детализации может иметь для себя такую же шапку и быть далее расписан на неограниченное количество вложений. Как мне наилучшим способом пройтись по все этим таблицам и получить список всех ингридиентов, участвующих в заданном рецепте, независимо от уровня вложенности.
База связязано с клиентским приложением через ADO Jet.


 
passm ©   (2002-10-14 13:17) [1]

Sergeyy © (14.10.02 12:10)> ???
Тебе рекурсивный запрос нужен?


 
Sergeyy ©   (2002-10-14 15:42) [2]

2 passm

Думаю, что, рекурсивный. В Access это можно сделать? (желательно в чистом SQL)


 
passm ©   (2002-10-14 16:50) [3]

Sergeyy © (14.10.02 15:42)> Для Access"а ИМХО никак :-(
Можно написать процедуру/функцию:
procedure MyProc(Query: TQuery; const FieldID, FieldName, FieldChildCount, ParamParent: string; List: TStringList);
var
i, j: Integer;
begin
Query.First;
while not(Query.Eof) do
begin
List.Add(Query.FieldByName(FieldName).AsString);
if Query.FieldByName(FieldChildCount).AsInteger > 0 then
begin
i:= Query.FieldByName(FieldID).AsInteger;
j:= Query.ParamByName(ParamParent).AsInteger;
Query.ParamByName(ParamParent).AsInteger:= Query.FieldByName(FieldID).AsInteger;
Query.Close;
Query.Open;
MyProc(Query, FieldID, FieldName, FieldChildCount, ParamParent, List);
Query.ParamByName(ParamParent).AsInteger:= j;
Query.Close;
Query.Open;
Query.Locate(FieldID, i, [])
end;
Query.Next
end
end;

И запрос:
SELECT T1.ID, T1.NAME, T1.PARENT
FROM TABLE1 AS T1
WHERE T1.PARENT = :PARENT

P.S. Вместо List можно использовать редактируемый набор данных (например, Query, возвращающий пустой набор данных с нужными полями).


 
MMF ©   (2002-10-14 16:57) [4]

Sergeyy © (14.10.02 12:10)
фактически, ты работаешь с деревом неопределенной глубины. Почитай http://sdm.viptop.ru/articles/sqltrees.html



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

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

Наверх




Память: 0.47 MB
Время: 0.029 c
1-11293
dihlos
2002-10-22 19:54
2002.11.04
Скрыть свойства в инспекторе объектов


1-11287
Krez
2002-10-23 11:48
2002.11.04
Установка нового компонента


1-11138
Valt
2002-10-24 11:30
2002.11.04
Debuger


1-11252
Дельфятник
2002-10-18 17:01
2002.11.04
Вопрос по динамическому созданию TComboBox ов.


3-11092
Started
2002-10-12 20:58
2002.11.04
Транзакции ...