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

Вниз

Использование агр.ф-ций на временных таблицах в IB   Найти похожие ветки 

 
Проходящий   (2008-11-01 12:01) [0]

Доброго времени суток, уважаемы мастера. У меня до безобразия глупый вопрос. Он заключается в следующем. Я создаю запрос в IBQUERY где использую несколько разных таблиц. И мне теперь необходимо по новой "временной" таблице провести некоторые вычисления, таких как Count, Max, Sum. Вот только проблема. Никак не получается создать выборку, используя ее для агр. ф-ций, используя временный набор. Просмотрел литературу, там в основном как правило вложение запроса после Where идет при сравнении столбцов и т.д. А мне нужно производить подсчет во вновь организованной таблице Select на основе нескольких таблиц. Не подскажите как можно сформулировать запрос что то вроде Select Count(*) form Table where Table = (select.....моя таблица). Или есть ли возможность объединить другой IBQuery, который бы обратился к dataset первого Query. Конечно, есть возможность обработки временной таблицы программным способом в стиле пробега по столбцам и строкам от first до eof(query). Но думаю это оставить на последний способ применения. Не подскажите, мастера, как можно решить поставленную задачу?


 
Johnmen ©   (2008-11-01 12:14) [1]

Именно "последним способом". Если не получилось агрегировать в запросе.
Предполагаю, что возможно в запросе, просто ты не смог...:)


 
Проходящий   (2008-11-01 12:31) [2]

Как раз таки и не получится при сборе нескольких таблиц :) вот просто так применить агрегатные функции, ввиду того, что при использовании запроса на образование временной "сводной" таблицы по которому требуется провести некоторый расчет используются разные ключи. А над временной таблицей, например, нужно провести всего лишь пару расчетов, и уже исходя из полученных данных, вновь организовывать временную таблицу, которая будет базироваться как полученном расчете предыдущей, плюс другие ключи из других таблиц. А вся литература, которую я просматривал не использует вариант построения запроса, который я привел в [1]. Вот и пытаюсь сообразить, как можно решить поставленную задачку :).


 
Сергей М. ©   (2008-11-01 12:44) [3]


> Проходящий


Все это беллетристика)

Ты скажи кратко и внятно - конкретный твой запрос компилируется или нет ?

Если не компилируется, то по какой конкретно причине ?

Если компилируется и даже работает, но не так как тобой ожидалось, то все равно без текста конкретного запроса сказать ничего нельзя..

Надеюсь. ты в курсе, что в IB кроме DSQL существует еще и PSQL ?


 
Johnmen ©   (2008-11-01 13:53) [4]


> Проходящий   (01.11.08 12:31) [2]

Если не удаётся сразу, единственным запросом, получить потребное клиентскому приложению, то посмотри в сторону VIEW и хранимых процедур.


 
Проходящий   (2008-11-01 14:19) [5]

Постараюсь привести один запросов:

IBQuery_Report.SQL.Add("Select B.ACHRTYPE as "Тип автоматики", B.Region as "Район", B.OBJECT as "Объект", B.CONSUMER as "Присоединение", "+
                 "B.NUM_OCHERED_ACHR as "№ очереди", B.FREQ_ACHR as "F.cp", B.VREMYA_ACHR as "T.cp", B.CH_APV as "ЧАПВ", B.NUM_OCHERED_APV as "№ очереди ЧАПВ", "+
                 "B.FREQ_APV as "F.cp.apv", B.VREMYA_APV as "T.cp.apv", P.D_Date as "Дата", P.P_MIN as "Pmin", P.P_MAX as "Pmax" from A4R_BASETABLE B, POWER_A4R P " +
                 "Where B.ID_STR = P.ID_LINE AND P.D_DATE = :data1 Order by B.ACHRTYPE, B.Region, B.OBJECT, B.CONSUMER" );

Вот я получил таблицу. Мне в ней нужно вычислить следующее:
Общий объема АЧР-1: Sum(pmax) where B.ACHRTYPE:="АЧР-1", b.ID_str= P.ID_LINE, P.D_DATE = :data1
в том числе АЧР-1  Запад: сравнение по Region.
                            в регионе Запад: 1 очередь - сравненеи с NUM_OCHERED_ACHR
                                                     2 чередь -...  
                          Восток:
                           и т.д.

и вот так у меня должен строится расчетный список.


 
Проходящий   (2008-11-01 14:20) [6]

Johnmen ©   (01.11.08 13:53) [4]
у меня возникала мысль создать View. Надо будет обдумать этот вариант.


 
Проходящий   (2008-11-01 14:21) [7]

Johnmen ©   (01.11.08 13:53) [4]
у меня возникала мысль создать View. Надо будет обдумать этот вариант.


 
Проходящий   (2008-11-01 14:21) [8]

извеняюсь, что лагнула связь


 
Правильный$Вася   (2008-11-01 21:50) [9]


>  временных таблицах в IB

нет там такого понятия

а ХП очень были бы к месту, хотя в твоем случа и вьюхой, вероятно,можно обойтись, если никаких параметров хитрых в запросе нет



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

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

Наверх




Память: 0.49 MB
Время: 0.015 c
2-1225706299
Godless
2008-11-03 12:58
2008.12.14
Помогите! Выражения и уравнения...


15-1222849944
vajo
2008-10-01 12:32
2008.12.14
Компьютерная программа обманула научный журнал с помощью корчеват


2-1225800533
newbie
2008-11-04 15:08
2008.12.14
таймер


15-1223369865
Василий Жогарев
2008-10-07 12:57
2008.12.14
FreeBSD 7.0-RELEASE & Sendmail - 8.14.2


2-1226072058
jonin
2008-11-07 18:34
2008.12.14
быки и коровы