Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.05 c
15-1164033526
Beavercrazy
2006-11-20 17:38
2006.12.10
Живо ли еще разрешение 800*600?


8-1145944179
TRyaSS
2006-04-25 09:49
2006.12.10
Как найти угол между отрезком и осью(любой )


11-1140213317
rainstuff
2006-02-18 00:55
2006.12.10
Скачивание URL из инета с использованием KOL


2-1164011733
Steep
2006-11-20 11:35
2006.12.10
ADO + Ms SQL Server


3-1160181676
Bogdan1024
2006-10-07 04:41
2006.12.10
Дедуктивные логические базы




   Наверх