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

Вниз

Два запроса   Найти похожие ветки 

 
Itonix ©   (2006-10-03 11:47) [0]

У меня есть два запроса: один счиатет общееколичество,а  второй - конкретно по компании (к примеру). такого вида:
1)
select count (distinct ank_nom) form ...
...тут join`ы...
group by nom _isled

2) select name_comp,nom_isled,count(ank_nom) from
...тут join`ы...
group by name_comp,nom_isled

Оба выполянють в ibQuery , но второй содержит еще поле fkCalculated которое должно расчитываеться как деление одной  записи из второго запроса на  первый (в onCalculated).
проблема вот в чем:
к примеру первый запрос вернет нам такое
NOM_ISLED   COUNT
1            2000
2            3000

второй:
NAME_COMP   NOM_SILED COUNT
Comp1        1         100
Comp1        2         150
Comp2        1         200
Comp3        2         300

должно посчитать мое поле таким макаром:
NOM_ISLED
1 -Comp1 - 100/2000 Comp2 - 200/2000
2 -Comp1 - 150/3000 Comp2 - 300/3000

я  не знаю как правильно организовать этот расчет.
если делать так:
OnCalculated (второго запроса, ддд - расчетное поле):
ibQuery2.fieldbyname("ddd").asFloat:=ibQuery2.fieldbyNmae("name_comp").asInteger /ibQuery1.fiedlbyname("COUNT").asInteger;
то числа получаються в результате не те что мне надо (оно и понятно, он будет брать только первую запись из 1-го запроса).
как можно это исправить? уже 2 дня думаю и придумать не могу (а если еще учесть что в оба запроса могут добавляться разные группировки......)


 
Sergey13 ©   (2006-10-03 11:56) [1]

А первый запрос для чего-то еще нужен? Почему нельзя получать нужную цифирь прямо во втором запросе?


 
dr Gonzo ©   (2006-10-03 12:01) [2]

А не проще ли написать SQL который сразу все посчитает ?

Select *, A.ACount / B.ACount
FROM A(....)
 join  B(....)  ON A.Nom_Siled = B.NOM_ISLED


A - запрос который по фирмам
B - итоговый

Если A и B оформить в виде хранимых процедур будет удобно. IB и FB умеет работать с Select из процедур.


 
Itonix ©   (2006-10-03 12:22) [3]

он не будет запускать процедуру для каждой строик заново?если да- это же долго будет.
и еще - запросы создаютьбся динамически и поля группировки и поля в селекте (для второго) будут разные. как это заюзать в процедуре?


 
Itonix ©   (2006-10-03 12:25) [4]

для [1] - разные соеденения, суть задачи так предполагает


 
Sergey13 ©   (2006-10-03 12:58) [5]

> [4] Itonix ©   (03.10.06 12:25)

В принципе не суть важно. Попробуй приделать ко 2 запросу первый.
Для того, что бы работало как есть надо перед расчетом поля локейтиться на нужную запись первого запроса по NOM_SILED.



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

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

Наверх




Память: 0.48 MB
Время: 0.041 c
1-1162197747
Andrewk88
2006-10-30 11:42
2006.12.10
Подключение dll созданной в VS2k3


15-1164123011
Stexen
2006-11-21 18:30
2006.12.10
Мелодия будильника для кпк


15-1163774225
antonn
2006-11-17 17:37
2006.12.10
сохранение картинки из ИЕ


1-1161672303
RayRom
2006-10-24 10:45
2006.12.10
Html to RTF желательно в памяти и целым текстом!


15-1164105040
TUser
2006-11-21 13:30
2006.12.10
АТА и обратная совместимость