|
|
|
Проблема с запросом (group by)
|
|||
|---|---|---|---|
|
#18+
Выполняю запрос: 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2004, 16:08:48 |
|
||
|
Проблема с запросом (group by)
|
|||
|---|---|---|---|
|
#18+
Поправка: STEL_A - телефон звонящего абонента NDURATION - длительность разговора (в запросе выбирется количество всех попыток разговоров, т. е., длительность (NDURATION)>=0) DBEGDATE - дата начала разговора ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2004, 16:10:53 |
|
||
|
Проблема с запросом (group by)
|
|||
|---|---|---|---|
|
#18+
... и SINTRANC - кодовое обозначение станции, из которой звонит абонент ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2004, 16:11:46 |
|
||
|
Проблема с запросом (group by)
|
|||
|---|---|---|---|
|
#18+
Запости нам сюда сюда сценарий для создания таблицы и пример неработающего запроса - мы посмотрим. И версию сервера скажи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2004, 16:38:10 |
|
||
|
Проблема с запросом (group by)
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2004, 17:09:56 |
|
||
|
Проблема с запросом (group by)
|
|||
|---|---|---|---|
|
#18+
Ты чё-то левый запрос дал. вот такой вот у меня работает на FB1.5.1: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2004, 17:22:55 |
|
||
|
Проблема с запросом (group by)
|
|||
|---|---|---|---|
|
#18+
GoldТы чё-то левый запрос дал... Вот такой запрос я пробовал, работает. Но когда использую объединенные запросы через UNION ALL, как в примере, выдает ошибку... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2004, 17:32:34 |
|
||
|
Проблема с запросом (group by)
|
|||
|---|---|---|---|
|
#18+
Двойные кавычки в запросе. Если заменишь заработает и с UNION ALL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2004, 17:42:56 |
|
||
|
Проблема с запросом (group by)
|
|||
|---|---|---|---|
|
#18+
У тебя там во первых кавычки неправильные, во вторых вопросительные зннаки непонятно к чему - если это параметры, так у их имена должны быть. Я запрос самого с собой объединил - всё работает. Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2004, 17:49:20 |
|
||
|
Проблема с запросом (group by)
|
|||
|---|---|---|---|
|
#18+
А как Делфи обяснить, что я хочу в строку вклеить одинарные кавычки, а не двойные?: 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%') :-( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2004, 18:02:00 |
|
||
|
Проблема с запросом (group by)
|
|||
|---|---|---|---|
|
#18+
RTFM QuotedStr() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2004, 18:03:39 |
|
||
|
Проблема с запросом (group by)
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2004, 18:28:19 |
|
||
|
Проблема с запросом (group by)
|
|||
|---|---|---|---|
|
#18+
... добавляю оператором Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2004, 18:29:49 |
|
||
|
Проблема с запросом (group by)
|
|||
|---|---|---|---|
|
#18+
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 Дальше объяснять ? ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2004, 18:55:52 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=32587272&tid=1578340]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
206ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 222ms |
| total: | 521ms |

| 0 / 0 |
