powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Invalid aggregate reference
32 сообщений из 32, показаны все 2 страниц
Invalid aggregate reference
    #32476498
BigBob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите пожалуйста разобраться. Есть две таблицы:
Код: plaintext
1.
2.
t1
Nomer integer
Name varchar( 10 )

Код: plaintext
1.
2.
3.
t2
Nomer integer
Data TIMESTAMP
Price double

В первой таблице хранятся записи о товарах (название, и т.д.). Во второй - цены с указанием даты установки цены. Таблицы связаны по полю Nomer.
Пытаюсь посичтать среднее время действия цен таким вот запросом:
Код: plaintext
select avg(cast('today' as TIMESTAMP) - (select max(t2.data) from t2 where t2.nomer = t1.nomer )) from t1

При этом получаю следующее сообщение об ошибке: "Invalid aggregate reference". Помогите пожалуйста побороть? Заранее спасибо!
...
Рейтинг: 0 / 0
Invalid aggregate reference
    #32476809
Winni-Pooh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я так понял, задача у тебя не разовая, поэтому почему бы не прибегнуть к ХП.
Вот примерный текст(извини, времени мало, писал быстро и проверить не успел:возможна путаница типов)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
CREATE PROCEDURE AverGoodPriceTime
RETURNS (Nomer Integer,Name VarChar( 10 ),AverPriceTime Float)
AS
DECLARE VARIABLE Data TimeStamp;
DECLARE VARIABLE Price Double;
DECLARE VARIABLE LastData TimeStamp;
DECLARE VARIABLE NewData TimeStamp;
DECLARE VARIABLE AvgTime TimeStamp;
DECLARE VARIABLE LastTime TimeStamp;
DECLARE VARIABLE TimeCount SmallInt;
BEGIN
 FOR SELECT Nomer,Name
           FROM t1
           INTO :Nomer,:Name
 DO
  BEGIN
   NewData='01-Jan-1800';
   AvgTime= 0 ;
   LastTime= 0 ;
   TimeCount= 0 ;
   FOR SELECT Data,Price
        FROM t2
        WHERE (t2.Nomer=:Nomer)
        INTO :Data,:Price
   DO
    BEGIN
     LastData=NewData;
     NewData=Data;
     IF (LastData>'01-Jan-1800') THEN
      BEGIN
        TimeCount=TimeCount+ 1 ;
        LastTime=NewData-LastData;
        AvgTime=AvgTime+LastTime;
      END
    END
   AverPriceTime=AvgTime/TimeCount;
   SUSPEND;
  END
END;
...
Рейтинг: 0 / 0
Invalid aggregate reference
    #32476810
Winni_Pooh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ЗЫ: Странно, писал текст процедуры лесенкой, а тут...
...
Рейтинг: 0 / 0
Invalid aggregate reference
    #32477319
BigBob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дело в том, что мне нужно ещё и отбирать товары по типам, которые указал пользователь. Что-то вроде:
Код: plaintext
where Type in ( 1 ,  2 ,  5 ,  7 ,  14 )

А я так понял, что в качестве параметра хранимой процедур масив передать нельзя ;(
...
Рейтинг: 0 / 0
Invalid aggregate reference
    #32477803
Winni-Pooh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Классически это делается путем предварительного заполнения специально созданной таблицы всего с одним полем, она потом INNER JOIN с t1. и GROUP BY Type.(Это первый FOR SELECT... в процедуре). Вот и все! :-)
...
Рейтинг: 0 / 0
Invalid aggregate reference
    #32477904
BigBob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А в случае с несколькими пользователями одновременно - заводим ещё одно поле что-то вроде UserId?
Подскажите плис, где можно посмотреть еще стандартных приёмов?
...
Рейтинг: 0 / 0
Invalid aggregate reference
    #32477930
Winni-Pooh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, придется добавлять поле UserID. Хотя тебе значения в таблице хранить всего лишь на время вычисления. Можно обойтись уровнем изоляции SnapShot:
открываешь транзакцию, очищаешь таблицу, кладешь значения, вычисляешь, закрываешь транзакцию - готово.
...
Рейтинг: 0 / 0
Invalid aggregate reference
    #32477945
BigBob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так нверное и сделаю. Thanks!
...
Рейтинг: 0 / 0
Invalid aggregate reference
    #32478019
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что за сервер пользуешь ? Если FB 1.5, то там есть классная штучка:

EXECUTE STATEMENT

Примерно так работает :
Код: plaintext
1.
STR = ' WHERE Type in (1, 2, 5, 7, 14) ';
EXECUTE STATEMENT 'SELECT * FROM T ' || STR INTO :PARMS 

В итого получаешь :
Код: plaintext
 SELECT * FROM T WHERE Type in ( 1 ,  2 ,  5 ,  7 ,  14 ) INTO :PARMS 


Best regards,
Dnico.
...
Рейтинг: 0 / 0
Invalid aggregate reference
    #32478737
BigBob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
InterBase 6
...
Рейтинг: 0 / 0
Invalid aggregate reference
    #32478746
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ату!
...
Рейтинг: 0 / 0
Invalid aggregate reference
    #32478837
BigBob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Согласен, что ату ;) У клиента стоит готовая уже прога, к которой я подвязался статистику писать. Так что приходится юсать то что есть ;(
...
Рейтинг: 0 / 0
Invalid aggregate reference
    #32478839
BigBob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Согласен, что ату ;) У клиента стоит готовая уже прога, к которой я подвязался статистику писать. Так что приходится юсать то что есть ;(
...
Рейтинг: 0 / 0
Invalid aggregate reference
    #32478865
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А при чем тут прога?
...
Рейтинг: 0 / 0
Invalid aggregate reference
    #32479068
BigBob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как причем? У людей стоит InterBase, на толпе рабочих мест крутится софтина, которая его юсает. И тут прихожу я со своей статистикой и говорю, что нужно быстренько сервер запгрэйдить.
...
Рейтинг: 0 / 0
Invalid aggregate reference
    #32479077
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для непонятливых, спрошу ещё раз. При чём тут прога к этому глюкалову (IB6) ?
...
Рейтинг: 0 / 0
Invalid aggregate reference
    #32479101
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BigBob
Всем давно уже известно что IB6 старый и не работающий сервер.
Еще не известно почему эта прога вообще работает. Скорее всего она написана с использованием элементарных запросов.
При изменении сервера программа будет дальше продолжать работать.
Никто даже не заметит, хотя может быть и удивятся - почему стало все шустрить.


Best regards,
Dnico.
...
Рейтинг: 0 / 0
Invalid aggregate reference
    #32479113
BigBob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тоесть я правильно понял, просто ставится Firebird, переливется база и всё должно заработать как раньше? Как это было бы здорово!
...
Рейтинг: 0 / 0
Invalid aggregate reference
    #32479124
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Клиента ещё нужно поставить нового на рабочие места.
...
Рейтинг: 0 / 0
Invalid aggregate reference
    #32479139
BigBob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо! Пошел качать новый сервер и эксперементировать ;)
...
Рейтинг: 0 / 0
Invalid aggregate reference
    #32479728
BigBob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите еще плис, люди добрые, я конструкцию
Код: plaintext
create generator
могу в хранимой процедуре использовать? IBConsole ругается со страшной силой ;(
...
Рейтинг: 0 / 0
Invalid aggregate reference
    #32479741
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, такое не поддерживаенся ...

Best regards,
Dnico.
...
Рейтинг: 0 / 0
Invalid aggregate reference
    #32479785
BigBob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я хотел сделать хранимую процедуру, которую бы вызывал в самом начале работы клиентской проги, сразу после соединения с сревером. Думал в ней проверять наличие нужных вьюшек, хранимых процедур, генераторов. Если чего-то не хватает - можно было бы сразу создавать. Получается не выйдет у меня завести такую процедуру ;(
...
Рейтинг: 0 / 0
Invalid aggregate reference
    #32479795
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну уж если очень хочется, то вот тут как раз об этом только что обсуждалось:\r
/topic/86536#626651\r
\r
Best regards,\r
Dnico.
...
Рейтинг: 0 / 0
Invalid aggregate reference
    #32479797
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нахер такую процедуру пихать в SP.
Делай это на клиенте.
...
Рейтинг: 0 / 0
Invalid aggregate reference
    #32479825
BigBob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я хотел запихаь в SP, на случай, если чего вдруг поменять нужно - эту SP подправил, и вперёд. Клиентов перекомпилять не нужно. Ну раз всё равно нельзя - нагружу это безобразие на клиента.
...
Рейтинг: 0 / 0
Invalid aggregate reference
    #32480494
BigBob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На вскидку не заработала прога на Firebird ;( Поставил версию 1.5.0.4306 для Win32. Подкиньте ссылочку, где можно почитать про переход с IB?
...
Рейтинг: 0 / 0
Invalid aggregate reference
    #32480529
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BigBob
А в чем заключается 'На вскидку не заработала прога на Firebird' ? Ошибки или что-то еще ?


Best regards,
Dnico.
...
Рейтинг: 0 / 0
Invalid aggregate reference
    #32480656
BigBob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Говорит, что "неправильно настроены параметры подключения к БД"
В проге жестко прописано, что база лежит в c:\DataBase\base.gdb, никаких настроек нету. Написана на дельфях. Должна она к Firebird-у цепляться без переделок?
...
Рейтинг: 0 / 0
Invalid aggregate reference
    #32480668
Фотография Dnico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как указывается строка коннекта?
И вообще какие параметры используются в программе для описания БД ?

Best regards,
Dnico.
...
Рейтинг: 0 / 0
Invalid aggregate reference
    #32480671
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мож, другую ветку начнете.... а то потом кто-нибудь будет искать, и не найдет... а, ребят? ;)

*** Ухожу с ПТ ***
...
Рейтинг: 0 / 0
Invalid aggregate reference
    #32480711
BigBob
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ок! Сейчас заведу новую ветку.
...
Рейтинг: 0 / 0
32 сообщений из 32, показаны все 2 страниц
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Invalid aggregate reference
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]