:: Главная :: Решения :: Статьи :: Проект "Русский help" :: Файловый архив :: Фотоальбом :: Ссылки ::
   Л и с о в о д ы   в с е х   с т р а н,  о б ъ е д и н я й т е с ь !!!  


Форумы  :: FAQ FoxPro

Запрос с GROUP BY выдает сообщение о синтаксической ошибке
Дата: 20.07.05 16:47:32 ОтветитьЦитировать

Проблема

Я выполняю примерно такой запрос

SELECT company, country FROM Customer GROUP BY country

И в версии FoxPro начиная с 8 и выше, получаю сообщение вроде

Цитата:
SQL: GROUP BY clause is invalid (Error 1807)

Причем в младших версиях FoxPro подобный запрос работал без проблем.

Причина

Начиная с версии Visual FoxPro 7.0, были ужесточены требования к корректности конструкции SQL-запросов.

В данном случае запрос содержит неоднозначность: Какое именно значение поля company надо взять из таблицы, если для одного и того же значения country их может существовать несколько?

В младших версиях FoxPro в этом случае использовалось первое попавшееся значение. В старших версиях FoxPro такая конструкция воспринимается как синтаксически некорректная.

Решение

Следует перечислить в конструкции GROUP BY все поля результирующей выборки, которые не имеют агрегирующих функций

SELECT company, country FROM Customer GROUP BY company, country

или добавить любую агрегирующую функцию к тем полям, которые не перечислены в конструкции GROUP BY

SELECT MAX(company) as company, country FROM Customer GROUP BY country

Впрочем, если Вы переводите свое приложение со старой версии FoxPro в новую версию, то можно явно указать FoxPro, что нужно использовать старые правила разбора и выполнения SQL-запроса при помощи настройки

SET ENGINEBEHAVIOR 70

Однако, по возможности, все-таки лучше придерживаться стандартных правил составления запросов в том смысле, что в конструкции GROUP BY должны быть перечислены все поля, которые не участвуют в агрегирующих функциях.
Ratings: 0 negative/0 positive


Тема Просмотров Написано Написано
  Работа с данными 5916 Владимир Максимов 01.03.05 21:04
  Выбрать из дочерней таблицы записи с максимальной датой 19198 Владимир Максимов 15.06.05 20:08
  Выбрать записи с повторяющимися (дублирующими) значениями поля 11222 Владимир Максимов 27.06.05 20:21
  Как выполнить восстановление поврежденных индексов 9230 Владимир Максимов 29.06.05 20:04
  Как изменить значения в одной таблице данными из другой 10875 Владимир Максимов 29.06.05 20:40
  Запрос с GROUP BY выдает сообщение о синтаксической ошибке 10640 Владимир Максимов 20.07.05 16:47
  При работе в сети иногда не открывается таблица 5239 Владимир Максимов 20.07.05 17:36
  Как получить программный код создания структуры базы данных 7572 Владимир Максимов 18.09.05 10:14
  Как восстановить поврежденную таблицу 17644 Владимир Максимов 31.08.08 22:02


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

On-line: 41 Taran  and Guests: 40


© 2006 Fox Club 
Яндекс.Метрика