Главная страница
    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.45 MB
Время: 0.009 c
1-94500
Arhangel
2002-04-16 19:04
2002.04.29
Help!!


4-94619
s-thick
2002-02-21 05:05
2002.04.29
Win2000, WinXP (Ctrl-Alt-Del)


1-94433
dnk
2002-04-15 19:01
2002.04.29
FreeReport.frf -> FastReport.frf


1-94367
Bodia
2002-04-15 12:18
2002.04.29
Какой компонент самый лутший для роботы с FTP?


1-94407
AHa
2002-04-17 11:31
2002.04.29
Компьютерные модели





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