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

Вниз

Использование агр.ф-ций на временных таблицах в 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.006 c
1-1204566987
Ринат
2008-03-03 20:56
2008.12.14
Работа с ThreadList


4-1185993816
Serega41
2007-08-01 22:43
2008.12.14
Как получить LinkName устройства?


15-1223541443
oleg_p
2008-10-09 12:37
2008.12.14
Помогите. Может кто с таким сталкивался.


6-1196409724
Ш-К
2007-11-30 11:02
2008.12.14
Как реализовать обсервер.


15-1223635424
{RASkov}
2008-10-10 14:43
2008.12.14
Поиск в Висте





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