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

Вниз

SQL - запрос проблемы...   Найти похожие ветки 

 
SkyR   (2002-04-09 08:32) [0]

//ComboPrepar - ЭТО ComboBox в котором лежит название всех препаратов
//Нужно для КАЖДОГО препарата подсчитать сумму по полям
//
//Demand
//REMAINSTY
//EXPENSE
//FINDEMAND
//

***
for j:=0 to ComboPrepar.Items.Count-1 do
Begin

DM.DM1.SQLQuery.Close;
DM.DM1.SQLQuery.SQL.Strings[0]:="select * from Main where "+"NAME="+chr(39)+ComboPrepar.Items.Strings[j]+chr(39);
DM.DM1.SQLQuery.Open;

DM.DM1.TableSvodRep.Open;
DM.DM1.TableSvodRep.Append;

DM.DM1.TableSvodRep.FieldByName("Name").AsString:=ComboPrepar.Items.Strings[j];

for i:=0 to DM.DM1.SQLQuery.RecordCount do
Begin
DM.DM1.TableSvodRep.FieldByName("Demand").AsFloat:=DM.DM1.TableSvodRep.FieldByName("Demand").AsFloat+DM.DM1.SQLQuery.FieldByName("Demand").AsFloat;
DM.DM1.TableSvodRep.FieldByName("REMAINSTY").AsFloat:=DM.DM1.TableSvodRep.FieldByName("REMAINSTY").AsFloat+DM.DM1.SQLQuery.FieldByName("REMAINSTY").AsFloat;
DM.DM1.TableSvodRep.FieldByName("EXPENSE").AsFloat:=DM.DM1.TableSvodRep.FieldByName("EXPENSE").AsFloat+DM.DM1.SQLQuery.FieldByName("EXPENSE").AsFloat;
DM.DM1.TableSvodRep.FieldByName("FINDEMAND").AsFloat:=DM.DM1.TableSvodRep.FieldByName("FINDEMAND").AsFloat+DM.DM1.SQLQuery.FieldByName("FINDEMAND").AsFloat;
DM.DM1.SQLQuery.Next;
End;

DM.DM1.TableSvodRep.Post;
End;
***

В принципе работает, но на P100 где она будет работать все это дело занимает около 3 мин!
Помогите плиз перевести часть между *** *** на SQL


 
fnatali   (2002-04-09 08:40) [1]

А названия всех препаратов у тебя хранятся в какой-то таблице? (по логике задачи надо-бы хранить)
Например,
таблица PREPAR
id
name
таблица MAIN
id_prepar
Demand
REMAINSTY
EXPENSE
FINDEMAND
Тогда можно уложиться в один запрос
DM.DM1.SQLQuery.Close;
DM.DM1.SQLQuery.SQL.Strings[0]:="select p.name,sum(m.demand),sum(m.remainsty), sum(m.expense), sum(m.findemand) from Main m, PREPAR p where p.id=m.id_prepar group by p.name");
DM.DM1.SQLQuery.Open;




 
roottim   (2002-04-09 08:42) [2]

супер!... как это читабельно :))

select f1,f2,...,sum(fn) from mytable1,... where...
grup by f1,f2,...,fn


 
Johnmen   (2002-04-09 09:03) [3]

Дополнение, вот так вот короче и читабельней :
with DM.DM1.SQLQuery do begin;
Close; SQL.Clear;
SQL.Append(...);
Open;
end;

PS Не совсем понятно, что такое DM и DM1 в связке ?







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

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

Наверх









Память: 0.82 MB
Время: 0.022 c
1-94444
Voldemar
2002-04-15 01:29
2002.04.29
Подскажите диалог...


14-94537
VictorT
2002-03-21 15:36
2002.04.29
програма примерки причёсок


1-94408
Коля
2002-04-18 05:49
2002.04.29
FontName To String?


1-94513
cypher
2002-04-16 23:40
2002.04.29
Глупость конечно, но...


1-94503
AlexP
2002-04-16 20:05
2002.04.29
Спрятать property





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