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


Форумы  :: FAQ FoxPro

Запрос с GROUP BY выдает сообщение о синтаксической ошибке
Дата: 20.07.05 17: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


Тема Просмотров Написано Написано
  Работа с данными 6236 Владимир Максимов 01.03.05 22:04
  Выбрать из дочерней таблицы записи с максимальной датой 20683 Владимир Максимов 15.06.05 21:08
  Выбрать записи с повторяющимися (дублирующими) значениями поля 12207 Владимир Максимов 27.06.05 21:21
  Как выполнить восстановление поврежденных индексов 9936 Владимир Максимов 29.06.05 21:04
  Как изменить значения в одной таблице данными из другой 12270 Владимир Максимов 29.06.05 21:40
  Запрос с GROUP BY выдает сообщение о синтаксической ошибке 11550 Владимир Максимов 20.07.05 17:47
  При работе в сети иногда не открывается таблица 5616 Владимир Максимов 20.07.05 18:36
  Как получить программный код создания структуры базы данных 7993 Владимир Максимов 18.09.05 11:14
  Как восстановить поврежденную таблицу 19489 Владимир Максимов 31.08.08 23:02


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

On-line: 8 Божья_коровка  (Гостей: 7)

19.10.2019 00:20:02 exec: 0.18
Mem: 1.222 Mb

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