Главная страница
    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.005 c
1-94498
Андрей Л
2002-04-16 00:05
2002.04.29
лимит ListBox-а.


4-94626
Nuhim
2002-02-22 10:43
2002.04.29
Как перехватить уход мыши в правый край экрана


1-94464
Reticent
2002-04-15 18:27
2002.04.29
Я походу или плохо выспался, или ооочень мало знаю, или тупой


3-94319
iva
2002-04-09 13:30
2002.04.29
Как добавить поле


1-94473
kaif
2002-04-16 04:32
2002.04.29
EXE или BPL?





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