:: Visual Foxpro, Foxpro for DOS
ERROR: "select ... group by ...
Fourthdim
Автор
Суть такова:

В VFP7 оператор

SELECT fieldOne, SUM(fieldTwo) FROM anCursor GROUP BY fieldOne INTO CURSOR anotherCursor

работает нормально. А в VFP9beta выдает сообщение об ошибке:

SQL: GROUP BY clause is missing or invalid.

ПОЧЕМУ ?

Ratings: 0 negative/0 positive
Re: ERROR: "select ... group by ...
Fourthdim
Автор
Извините, разобрался сам. Нужно использовать команду:

SET ENGINEBEHAVIOR 70

ЗЫ: Но зачем так сложно...?
Ratings: 0 negative/0 positive
Re: ERROR: "select ... group by ...
Naomi

Сообщений: 1796
Дата регистрации: 09.10.2003
Приведенный фрагмент должен правильно и так работать. Что-то Вы не договариваете. Единственное, вычисляемым полям я обычно даю имя, например, sum(FieldTwo) as TotalPrice
Ratings: 0 negative/0 positive
Re: ERROR: "select ... group by ...
PaulWist

Сообщений: 14618
Дата регистрации: 01.04.2004
Правильно Nadya_N говорит (что-то не договариваешь), проверь сам

create CURSOR tmp (id i, Id2 i)
FOR i = 1 TO 100
INSERT INTO tmp (id, id2) VALUES (i, MOD(i,2))
ENDFOR
SELECT SUM(id), id2 FROM tmp GROUP BY id2

проходит без ошибки ?SET ('ENGINEBEHAVIOR') = 90




------------------
Есть многое на свете, друг Горацио...
Что и не снилось нашим мудрецам.
(В.Шекспир Гамлет)
Ratings: 0 negative/0 positive
Re: ERROR: "select ... group by ...
Fourthdim
Автор
Спасибо всем откликнувшимся.

Вы верно заметили, приведённый мною пример кода работает корректно во всех версиях. Уж очень сильно я его сократил. Более длинный пример мог бы выглядетьтак:

SELECT fieldOne, SUM(fieldTwo), fieldTree, fieldFour, ..... FROM anCursor GROUP BY fieldOne INTO CURSOR anotherCursor


Прочитав справку по команде SET ENGINEBEHAVIOR стало понятно что в GROUP BY теперь обязательно перечислять все поля не используемые в агрегатных функциях. И это правильно, IMHO. Язык стал более строже (ещё бы контроль типов...).
Ratings: 0 negative/0 positive
Re: ERROR:
Владимир Максимов

Сообщений: 14097
Откуда: Москва
Дата регистрации: 02.09.2000
Цитата:
ещё бы контроль типов
Для команды Select-SQL?

В VFP9 введена функция CAST()

CREATE CURSOR test (test C(10))
INSERT INTO test VALUES ("1")
SELECT CAST(test as I) as IntField FROM test




------------------
Ratings: 0 negative/0 positive
Re: ERROR: "select ... group by ...
Syberex

Сообщений: 1432
Откуда: Кострома
Дата регистрации: 19.01.2004
Можно так
SELECT fieldOne, SUM(fieldTwo), fieldTree, fieldFour, ..... FROM anCursor GROUP BY 1,3,4 INTO CURSOR anotherCursor




------------------
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 33 leonid  (Гостей: 32)

© 2000-2024 Fox Club 
Яндекс.Метрика