|
|
|
Почему не работает запрос
|
|||
|---|---|---|---|
|
#18+
В командном окне набираю этот запрос и выдается ошибка SQL:GROUP BY clause is missing or invalid Код: plaintext если tax_id убрать тогда работает, но мне надо знать какой номер у этой записи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2005, 08:43:17 |
|
||
|
Почему не работает запрос
|
|||
|---|---|---|---|
|
#18+
Почитай внимательно про Set EngineBehavior. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2005, 08:45:51 |
|
||
|
Почему не работает запрос
|
|||
|---|---|---|---|
|
#18+
canyaВ командном окне набираю этот запрос и выдается ошибка SQL:GROUP BY clause is missing or invalid Код: plaintext если tax_id убрать тогда работает, но мне надо знать какой номер у этой записи. Как раз tax_id и надо убрать. Здесь идет запрос и какие tax_id в таблице tax имели место быть тут нипричем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2005, 08:58:04 |
|
||
|
Почему не работает запрос
|
|||
|---|---|---|---|
|
#18+
2Владимир СА Как ни причем, а если я хочу получить номер записи у которой максимальное значение поля raschet_id в комбинации 3 полей region_id, period_id, factory_id. 2проходящий Спасибо. поставил 70 заработало. Только не пойму зачем это все нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2005, 09:09:48 |
|
||
|
Почему не работает запрос
|
|||
|---|---|---|---|
|
#18+
Добрый день. Переменная tax_id отсутствует в списке group by. Если по ключу factory_id, region_id, period_id есть несколько tax_id то какой из них отображать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2005, 09:12:42 |
|
||
|
Почему не работает запрос
|
|||
|---|---|---|---|
|
#18+
for denis_viktorovich По идее это уникальная комибнация, но пусть будет первая попавшаяся ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2005, 09:19:08 |
|
||
|
Почему не работает запрос
|
|||
|---|---|---|---|
|
#18+
Hi, canya ! Действительно все работает при Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2005, 09:21:09 |
|
||
|
Почему не работает запрос
|
|||
|---|---|---|---|
|
#18+
Согласна стандарта ANSI SQL-92, при использовании GROUP BY... в SELECT... вы можете в списке полей использовать ТОЛЬКО поля с агрегатными функциями и поля, по которым выполняется группировка. Если вы подумаете над этим, то поймете, что только такой вариант имеет смысл. Начиная с версии 8, VFP стал поддерживать это утверждение стандарта ANSI, а для совместимости осталась опция SET ENGINEBEHAVIOR 70. Если вам требуется включить в состав запроса поля, по которым не надо делать группировку, а семантически это поля группировки (Например, группировка по ID клиента, а в списке полей выводим и его имя), то применяйте над этими полями "нейтральные" агрегатные функции типа MAX и MIN. Если в вашем запросе поле tax_id имеет однозначное соответствие с одним из полей группировки (factory_id, region_id, period_id), то можете смело заменить его на MAX(tax_id) AS tax_id или добавить в конец полей группировки (Group BY factory_id, region_id, period_id, tax_id). Если нет, то запрос составлен семантически не правильно и SET ENGINEBEHAVIOR 70 только загоняет проблему в глубь. С уважением, Алексей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2005, 09:34:48 |
|
||
|
Почему не работает запрос
|
|||
|---|---|---|---|
|
#18+
Aleksey-KСогласна стандарта ANSI SQL-92, при использовании GROUP BY... в SELECT... вы можете в списке полей использовать ТОЛЬКО поля с агрегатными функциями и поля, по которым выполняется группировка. Если вы подумаете над этим, то поймете, что только такой вариант имеет смысл. Чисто согласен. Aleksey-K...то применяйте над этими полями "нейтральные" агрегатные функции типа MAX и MIN. Если в вашем запросе поле tax_id имеет однозначное соответствие с одним из полей группировки (factory_id, region_id, period_id), то можете смело заменить его на MAX(tax_id) AS tax_id или добавить в конец полей группировки (Group BY factory_id, region_id, period_id, tax_id). Если нет, то запрос составлен семантически не правильно и SET ENGINEBEHAVIOR 70 только загоняет проблему в глубь. С уважением, Алексей Т.е. для canya запрос д.б. выглядеть так: Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2005, 10:05:06 |
|
||
|
Почему не работает запрос
|
|||
|---|---|---|---|
|
#18+
Hi Владимир! > SELECT MAX(tax_id) as tax_id, factory_id, region_id, period_id, > MAX(raschet_id) ; > FROM tax ; > Group BY factory_id, region_id, period_id ; > INTO CURSOR Cur_tax1 ИЛИ SELECT tax_id, factory_id, region_id, period_id, MAX(raschet_id) ; FROM tax ; Group BY tax_id, factory_id, region_id, period_id ; INTO CURSOR Cur_tax1 Поскольку автор утверждает что комбинация уникальна, то результат будет идентичный. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2005, 00:24:36 |
|
||
|
Почему не работает запрос
|
|||
|---|---|---|---|
|
#18+
Предыдущий мой совет (см.выше): >Т.е. для canya запрос д.б. выглядеть так: >SELECT MAX(tax_id) as tax_id, factory_id, region_id, period_id, MAX(raschet_id) ; > FROM tax ; > Group BY factory_id, region_id, period_id ; > INTO CURSOR Cur_tax1 является неправильным. Подобрал данные, которые показывают неправильность этого запроса. Igor Korolyov ... ИЛИ SELECT tax_id, factory_id, region_id, period_id, MAX(raschet_id) ; FROM tax ; Group BY tax_id, factory_id, region_id, period_id ; INTO CURSOR Cur_tax1 Поскольку автор утверждает что комбинация уникальна, то результат будет идентичный. Нет! Здесь будут выбираться все записи из таблицы tax, т.к. tax_id это поле скорее всего уникально для таблицы tax. По крайне мере на моих данных так. А автору необходимо выбрать записи с MAX(raschet_id) в комбинации 3 полей region_id, period_id, factory_id, но при этом еще знать номер записи таблицы tax (т.е. tax_id). См. выше. М.б. имеет место другой запрос, но пока автору наверное хватает: Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2005, 07:34:58 |
|
||
|
Почему не работает запрос
|
|||
|---|---|---|---|
|
#18+
У задачи много решений, например так: SELECT factory_id, region_id, period_id, MAX(raschet_id) as raschet_id ; FROM tax ; GROUP BY factory_id, region_id, period_id ; INTO CURSOR Cur_tax1 SELECT MAX(t.tax_id) as tax_id,t.factory_id, t.region_id, t.period_id, t.raschet_id ; FROM tax t, Cur_tax1 ct ; WHERE t.factory_id = ct.factory_id ; AND t.region_id = ct.region_id ; AND t.period_id = ct.period_iс ; AND t.period_id = сt.period_id GROUP BY factory_id, region_id, period_id, t.raschet_id ; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2005, 10:09:36 |
|
||
|
Почему не работает запрос
|
|||
|---|---|---|---|
|
#18+
Hi, golsa ! Конечно один из вариантов то что вы написали. Но как всегда интресен один SELECT. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2005, 10:33:09 |
|
||
|
Почему не работает запрос
|
|||
|---|---|---|---|
|
#18+
Владимир САHi, golsa ! Конечно один из вариантов то что вы написали. Но как всегда интресен один SELECT. VFP 9.0 поддерживает подзапросы! Кто мешает два запроса запихнуть в один: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. С уважением, Алексей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2005, 11:30:46 |
|
||
|
Почему не работает запрос
|
|||
|---|---|---|---|
|
#18+
Только конечно надо убрать в подзапросе Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2005, 11:33:17 |
|
||
|
Почему не работает запрос
|
|||
|---|---|---|---|
|
#18+
Hi, Aleksey-K ! В VFP90 действительно имеет место быть: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2005, 12:29:38 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=33253067&tid=1593524]: |
0ms |
get settings: |
6ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
277ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 187ms |
| total: | 528ms |

| 0 / 0 |
