Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.12.10;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.042 c
3-1159857916
Megabyte
2006-10-03 10:45
2006.12.10
Можно ли прописать алиас без перезапуска сервера?


2-1164186409
--= Eagle =--
2006-11-22 12:06
2006.12.10
заменить текст чекбокса в OpenDialog


6-1153381513
s_pavell
2006-07-20 11:45
2006.12.10
Аудит принтера в сети


2-1164545653
Jimmy
2006-11-26 15:54
2006.12.10
Повернутый эллипс.


2-1164282397
Jimmy
2006-11-23 14:46
2006.12.10
Ошибка при уничтожении формы.





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