Главная страница
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.034 c
3-1159240148
alabama01
2006-09-26 07:09
2006.12.10
Продажа билетов несколькими кассирами


9-1139671686
VolanD666
2006-02-11 18:28
2006.12.10
Общая матрица поворота...


15-1163770520
Сало
2006-11-17 16:35
2006.12.10
С днём студента!


3-1159767855
Tab
2006-10-02 09:44
2006.12.10
Локальная база данных


2-1164117819
d122342
2006-11-21 17:03
2006.12.10
Как получить хендлы кнопок чужой программы?