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

Вниз

Обход связанных 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.008 c
1-11142
Vaddya
2002-10-23 20:36
2002.11.04
Оператор switch-case


1-11278
Шурик Ш
2002-10-23 12:12
2002.11.04
Подскажите компонент


14-11415
strong
2002-10-12 16:57
2002.11.04
Куда же его спрятать?


3-11078
NeyroSpace
2002-10-15 13:07
2002.11.04
Как из триггера поставить DataStamp на запись?


3-11133
Quaker
2002-10-17 05:50
2002.11.04
array of const





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