powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Проблема с запросом (group by)
15 сообщений из 15, страница 1 из 1
Проблема с запросом (group by)
    #32585677
Фотография Ihor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выполняю запрос:

Select SINTRANC, Count(NDURATION) as nall
From AMA
Where (SSOURCE=1)
and (dbegdate between ? and ?)
AND (
( SINTRANC=?
AND (
(STEL_A Like "4737911%") OR
(STEL_A Like "4737912%") OR
(STEL_A Like "4737913%") OR
(STEL_A Like "4737914%") OR
(STEL_A Like "4737915%") OR
(STEL_A Like "4737916%")) )
) group by SINTRANC

все работает. Когда же добавляю выборку любого другого поля из таблицы, к примеру:

Select SINTRANC, DBEGDATE, Count(NDURATION) as nall
(или вместо DBEGDATE STEL_A)
From AMA
Where (SSOURCE=1)
and (dbegdate between ? and ?)
AND (
( SINTRANC=?
AND (
(STEL_A Like "4737911%") OR
(STEL_A Like "4737912%") OR
(STEL_A Like "4737913%") OR
(STEL_A Like "4737914%") OR
(STEL_A Like "4737915%") OR
(STEL_A Like "4737916%")) )
) group by SINTRANC, DBEGDATE

пишет ошибку:
Invalid expression in the selec list (not contained in either an aggregate function or the GROUP BY clause)
В чем же грабли? :-(
С уважением, Ihor
...
Рейтинг: 0 / 0
Проблема с запросом (group by)
    #32585684
Фотография Ihor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поправка:
STEL_A - телефон звонящего абонента

NDURATION - длительность разговора (в запросе выбирется количество всех
попыток разговоров, т. е., длительность (NDURATION)>=0)

DBEGDATE - дата начала разговора
...
Рейтинг: 0 / 0
Проблема с запросом (group by)
    #32585688
Фотография Ihor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
... и SINTRANC - кодовое обозначение станции, из которой звонит абонент
...
Рейтинг: 0 / 0
Проблема с запросом (group by)
    #32585754
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запости нам сюда сюда сценарий для создания таблицы и пример неработающего запроса - мы посмотрим. И версию сервера скажи.
...
Рейтинг: 0 / 0
Проблема с запросом (group by)
    #32585838
Фотография Ihor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GoldЗапости нам сюда сюда сценарий для создания таблицы и пример неработающего запроса - мы посмотрим. И версию сервера скажи.
Сервер Firebird 1.5
Таблица:

SET NAMES NONE;
CREATE GENERATOR SEQAMA;

CREATE TABLE AMA (
NID INTEGER NOT NULL,
NFILEID INTEGER,
SSOURCE VARCHAR(1),
SPAY VARCHAR(1),
STEL_A VARCHAR(20),
DBEGDATE DATE,
NDURATION INTEGER,
STEL_B VARCHAR(20),
STYPE VARCHAR(1),
SCAT_A VARCHAR(2),
SINTRANC VARCHAR(6),
NINCHANNEL INTEGER,
SOUTTRANC VARCHAR(6),
NOUTCHANNEL INTEGER,
NOSSMINUTES INTEGER,
STYPEOSS VARCHAR(2),
SOPERATOROSS VARCHAR(4),
SMAPOSS VARCHAR(6),
STYPETRAFFIC_A VARCHAR(1),
STYPETRAFFIC_B VARCHAR(1),
SMOBILEFLAG VARCHAR(1),
SEDITFLAG VARCHAR(1)
);

ALTER TABLE AMA ADD PRIMARY KEY (NID);

CREATE INDEX DBEGDATEX ON AMA (DBEGDATE);
CREATE INDEX TEL_AX ON AMA (STEL_A);
CREATE INDEX TEL_BX ON AMA (STEL_B);

SET TERM ^ ;

CREATE TRIGGER INSERT_AMA FOR AMA
ACTIVE BEFORE INSERT POSITION 0
as
begin
new.nid = gen_id( seqAMA,1 );
end
^

SET TERM ; ^

Но таблицу создавали другие люди. мне дали ее с некоторыми данными, я закачиваю туда данные и делаю выборку. Чтобы создать ее самому - отпадает, т. к. необходимо именно такая структура (не мне) :-(

Запрос неработающий:

Select SINTRANC, STEL_A, Count(NDURATION) as nall
From AMA
Where (SSOURCE=1)
and (dbegdate between ? and ?)
AND (
( SINTRANC=?
AND (
(STEL_A Like "4737911%") OR
(STEL_A Like "4737912%") OR
(STEL_A Like "4737913%") OR
(STEL_A Like "4737914%") OR
(STEL_A Like "4737915%") OR
(STEL_A Like "4737916%")) )
) group by SINTRANC, STEL_A
UNION ALL
Select SINTRANC, STEL_A, Count(NDURATION) as nall
From AMA
Where (SSOURCE=1)
and (dbegdate between ? and ?)
AND (
( SINTRANC=?
AND (
(STEL_A Like "473792%") OR
(STEL_A Like "473793%") OR
(STEL_A Like "473794%") OR
(STEL_A Like "473795%")) )
) group by SINTRANC, STEL_A
UNION ALL
Select SINTRANC, STEL_A, Count(NDURATION) as nall
From AMA
Where (SSOURCE=1)
and (dbegdate between ? and ?)
AND (
( SINTRANC=?
AND (STEL_A Like "473743%"))) group by SINTRANC
UNION ALL
Select SINTRANC, STEL_A, Count(NDURATION) as nall
From AMA
Where (SSOURCE=1)
and (dbegdate between ? and ?)
AND (
( SINTRANC=?
AND (
(STEL_A Like "4737971%") OR
(STEL_A Like "4737972%") OR
(STEL_A Like "4737973%") OR
(STEL_A Like "4737974%") OR
(STEL_A Like "4737975%") OR
(STEL_A Like "4737976%") OR
(STEL_A Like "4737977%") OR
(STEL_A Like "4737978%")) )
) group by SINTRANC, STEL_A
UNION ALL
Select SINTRANC, STEL_A, Count(NDURATION) as nall
From AMA
Where (SSOURCE=1)
and (dbegdate between ? and ?)
AND (
( SINTRANC=?
AND (
(STEL_A Like "4737981%") OR
(STEL_A Like "4737982%")) )
) group by SINTRANC, STEL_A
UNION ALL
Select SINTRANC, STEL_A, Count(NDURATION) as nall
From AMA
Where (SSOURCE=1)
and (dbegdate between ? and ?)
AND (
( SINTRANC=?
AND (
(STEL_A Like "4737983%") OR
(STEL_A Like "4737984%")) )
) group by SINTRANC, STEL_A
UNION ALL
Select SINTRANC, STEL_A, Count(NDURATION) as nall
From AMA
Where (SSOURCE=1)
and (dbegdate between ? and ?)
AND (
( SINTRANC=?
AND (STEL_A Like "4737987%"))) group by SINTRANC
...
Рейтинг: 0 / 0
Проблема с запросом (group by)
    #32585864
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты чё-то левый запрос дал. вот такой вот у меня работает на FB1.5.1:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Select SINTRANC, STEL_A, Count(NDURATION) as nall 
From AMA
Where SSOURCE= 1 
AND (
( SINTRANC= 111 
AND (
(STEL_A Like '4737911%') OR
(STEL_A Like '4737912%') OR
(STEL_A Like '4737913%') OR
(STEL_A Like '4737914%') OR
(STEL_A Like '4737915%') OR
(STEL_A Like '4737916%')) )
) group by SINTRANC, STEL_A
...
Рейтинг: 0 / 0
Проблема с запросом (group by)
    #32585886
Фотография Ihor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GoldТы чё-то левый запрос дал...
Вот такой запрос я пробовал, работает. Но когда использую объединенные запросы через UNION ALL, как в примере, выдает ошибку...
...
Рейтинг: 0 / 0
Проблема с запросом (group by)
    #32585918
Igor Elyas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Двойные кавычки в запросе.
Если заменишь заработает и с UNION ALL
...
Рейтинг: 0 / 0
Проблема с запросом (group by)
    #32585936
Gold
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У тебя там во первых кавычки неправильные, во вторых вопросительные зннаки непонятно к чему - если это параметры, так у их имена должны быть.
Я запрос самого с собой объединил - всё работает.
Код: 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.
Select SINTRANC, STEL_A, Count(NDURATION) as nall 
From AMA
Where SSOURCE= 1 
AND (
( SINTRANC= 111 
AND (
(STEL_A Like '4737911%') OR
(STEL_A Like '4737912%') OR
(STEL_A Like '4737913%') OR
(STEL_A Like '4737914%') OR
(STEL_A Like '4737915%') OR
(STEL_A Like '4737916%')) )
) group by SINTRANC, STEL_A
UNION ALL
Select SINTRANC, STEL_A, Count(NDURATION) as nall 
From AMA
Where SSOURCE= 1 
AND (
( SINTRANC= 111 
AND (
(STEL_A Like '4737911%') OR
(STEL_A Like '4737912%') OR
(STEL_A Like '4737913%') OR
(STEL_A Like '4737914%') OR
(STEL_A Like '4737915%') OR
(STEL_A Like '4737916%')) )
) group by SINTRANC, STEL_A
...
Рейтинг: 0 / 0
Проблема с запросом (group by)
    #32585963
Фотография Ihor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как Делфи обяснить, что я хочу в строку вклеить одинарные кавычки, а не двойные?:
IBQuery1.SQL.Add('AND ('+ttel+' Like ''+phonea1+'' %) group by '+t );
или
IBQuery1.SQL.Add('AND ('+ttel+' Like +'''' +phonea1+'''' %) group by '+t );
или
IBQuery1.SQL.Add('AND ('+ttel+' Like +'''' +phonea1+''%'' ) group by '+t );

вставляет строку типа

(STEL_A Like +''+4737911 ''%) а не (STEL_A Like '4737911%') :-(
...
Рейтинг: 0 / 0
Проблема с запросом (group by)
    #32585968
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RTFM QuotedStr()
...
Рейтинг: 0 / 0
Проблема с запросом (group by)
    #32586008
Фотография Ihor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Select SINTRANC, STEL_A, Count(NDURATION) as nall
From AMA
Where (SSOURCE=1)
and (dbegdate between ? and ?)
AND (
( SINTRANC=?
AND (
(STEL_A Like '4737911%') OR
(STEL_A Like '4737912%') OR
(STEL_A Like '4737913%') OR
(STEL_A Like '4737914%') OR
(STEL_A Like '4737915%') OR
(STEL_A Like '4737916%')) )
) group by SINTRANC, STEL_A
UNION ALL
Select SINTRANC, STEL_A, Count(NDURATION) as nall
From AMA
Where (SSOURCE=1)
and (dbegdate between ? and ?)
AND (
( SINTRANC=?
AND (
(STEL_A Like '473792%') OR
(STEL_A Like '473793%') OR
(STEL_A Like '473794%') OR
(STEL_A Like '473795%')) )
) group by SINTRANC, STEL_A
UNION ALL
и т. д....
также ругается...
С уважением, Ihor
...
Рейтинг: 0 / 0
Проблема с запросом (group by)
    #32586010
Фотография Ihor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
... добавляю оператором
Код: plaintext
1.
2.
 
IBQuery1.SQL.Add(' ('+ttel+' Like '''+stel+IntToStr(k)+'%'') OR');
...
Рейтинг: 0 / 0
Проблема с запросом (group by)
    #32586058
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Select SINTRANC, STEL_A, Count(NDURATION) as nall
From AMA
Where (SSOURCE=1)
and (dbegdate between ? and ?)
AND (
( SINTRANC=?
AND (
(STEL_A Like "4737911%") OR
(STEL_A Like "4737912%") OR
(STEL_A Like "4737913%") OR
(STEL_A Like "4737914%") OR
(STEL_A Like "4737915%") OR
(STEL_A Like "4737916%")) )
) group by SINTRANC, STEL_A
UNION ALL
Select SINTRANC, STEL_A, Count(NDURATION) as nall
From AMA
Where (SSOURCE=1)
and (dbegdate between ? and ?)
AND (
( SINTRANC=?
AND (
(STEL_A Like "473792%") OR
(STEL_A Like "473793%") OR
(STEL_A Like "473794%") OR
(STEL_A Like "473795%")) )
) group by SINTRANC, STEL_A
UNION ALL
Select SINTRANC, STEL_A , Count(NDURATION) as nall
From AMA
Where (SSOURCE=1)
and (dbegdate between ? and ?)
AND (
( SINTRANC=?
AND (STEL_A Like "473743%"))) group by SINTRANC
UNION ALL
Select SINTRANC, STEL_A, Count(NDURATION) as nall
From AMA
Where (SSOURCE=1)
and (dbegdate between ? and ?)
AND (
( SINTRANC=?
AND (
(STEL_A Like "4737971%") OR
(STEL_A Like "4737972%") OR
(STEL_A Like "4737973%") OR
(STEL_A Like "4737974%") OR
(STEL_A Like "4737975%") OR
(STEL_A Like "4737976%") OR
(STEL_A Like "4737977%") OR
(STEL_A Like "4737978%")) )
) group by SINTRANC, STEL_A
UNION ALL
Select SINTRANC, STEL_A, Count(NDURATION) as nall
From AMA
Where (SSOURCE=1)
and (dbegdate between ? and ?)
AND (
( SINTRANC=?
AND (
(STEL_A Like "4737981%") OR
(STEL_A Like "4737982%")) )
) group by SINTRANC, STEL_A
UNION ALL
Select SINTRANC, STEL_A, Count(NDURATION) as nall
From AMA
Where (SSOURCE=1)
and (dbegdate between ? and ?)
AND (
( SINTRANC=?
AND (
(STEL_A Like "4737983%") OR
(STEL_A Like "4737984%")) )
) group by SINTRANC, STEL_A
UNION ALL
Select SINTRANC, STEL_A , Count(NDURATION) as nall
From AMA
Where (SSOURCE=1)
and (dbegdate between ? and ?)
AND (
( SINTRANC=?
AND (STEL_A Like "4737987%"))) group by SINTRANC

Дальше объяснять ? ;)
...
Рейтинг: 0 / 0
Проблема с запросом (group by)
    #32587272
Фотография Ihor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad
...Дальше объяснять ? ;)

Ну надо же!!! Такая мелоч!
Огромное всем спасибо за помощь, ЗАРАБОТАЛО!!!
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Проблема с запросом (group by)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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