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

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



Память: 0.48 MB
Время: 0.009 c
2-1225458274
dmitry_12_08_73
2008-10-31 16:04
2008.12.14
Создание файла


2-1225802468
D7
2008-11-04 15:41
2008.12.14
StringList


15-1223638615
MadSnake
2008-10-10 15:36
2008.12.14
freerep и IBO_D6


2-1226048524
Костик
2008-11-07 12:02
2008.12.14
Консольное приложение


4-1201614798
lead-in
2008-01-29 16:53
2008.12.14
RasEntryDlg




   Наверх