Слишком много предложений Group By

MapInfo, MapBasic
Ответить
Красная шапочка
Участник
Сообщения: 71
Зарегистрирован: 10 ноя 2009, 01:56
Репутация: 0
Откуда: Казань

Слишком много предложений Group By

Сообщение Красная шапочка »

При использовании в предложении Group By оператора Select более 5 полей выдает ошибку "Слишком много предложений Group By", а выборку нужно сгруппировать по 7 полям. Кто-нибудь сталкивался с этим? Как можно выйти из этой ситуации?
Boris
Гуру
Сообщения: 4231
Зарегистрирован: 10 апр 2006, 22:34
Репутация: -344969098
Откуда: Париж

Re: Слишком много предложений Group By

Сообщение Boris »

А зачем вообще делать такую крайне специфичную вещь в MI? Если это такая насыщенная атрибутивная таблица, то стоит ее сперва обсчитать в какой-нибудь СУБД или табличном редакторе.
7 уровней группировки дадут таблицу практически равную исходной.
reasonat
Завсегдатай
Сообщения: 257
Зарегистрирован: 10 июн 2009, 12:21
Репутация: 0
Откуда: Екатеринбург
Контактная информация:

Re: Слишком много предложений Group By

Сообщение reasonat »

Можно просто пару раз сделать запрос с группировкой. Первый раз на 4-5 полей, и сохранить копию выборки как нормальную таблицу, потом с нее еще раз запрос с группировкой по оставшимся полям сделать. И усе.
Красная шапочка
Участник
Сообщения: 71
Зарегистрирован: 10 ноя 2009, 01:56
Репутация: 0
Откуда: Казань

Re: Слишком много предложений Group By

Сообщение Красная шапочка »

но при первой группировке, данные по тем столбцам, по которым предполагается сделать группировку во второй заход, теряются
Boris
Гуру
Сообщения: 4231
Зарегистрирован: 10 апр 2006, 22:34
Репутация: -344969098
Откуда: Париж

Re: Слишком много предложений Group By

Сообщение Boris »

Сохраните исходную таблицу в виде таблица в формате MS Access.
Зайдите в Access и создайте запрос на создание новой таблицы с требуемыми вами уровнями группировки.
Откройте эту новую таблицу в MapInfo - создастся таблица, связанная с таблицей MS Access.
Вынесите на рабочий стол (или куда еще) ярлык этого запроса. Теперь при клике на нем будет производится перерасчет с созданием новой таблицы.
Неудобства этого метода:
- получится фиксированная таблица
- ее надо будет пересчитывать
- ее надо закрывать в MI иначе будет выдаваться ошибка блокировки таблицы при попытке ее оновления
- при клике на ярлыке будет запускаться Access
- будет выводиться куча ненужных сообщений (но их можно отключить в настройках Access)
Достоинства:
- получится полноценный SQL запрос
- его легко изменить
- анализировать агрегированные данные в Access удобней
reasonat
Завсегдатай
Сообщения: 257
Зарегистрирован: 10 июн 2009, 12:21
Репутация: 0
Откуда: Екатеринбург
Контактная информация:

Re: Слишком много предложений Group By

Сообщение reasonat »

Анализировать в Access удобнее. А на один раз провести группировку - проще в мапинфе, не связываясь с настройками еще одной замечательной программы. Пересчитать ее, правда, уже нельзя. Разве что сохранить все операции в макрос в окне MapBasic, и при необходимости повторить снова, с другими данными.
И кстати, данные полей пропадать не должны. Если в запросе указаны все нужные поля, они в результате и останутся. Вот только такой задачи представить не могу, требующей аж по 7ми полям группировку. Смысла в такой таблице от остальных полей?
Andrew
Активный участник
Сообщения: 134
Зарегистрирован: 01 окт 2009, 08:52
Репутация: 3
Откуда: Москва

Re: Слишком много предложений Group By

Сообщение Andrew »

Такое ограничение может быть связано с тем, что суммарная длина полей группировки превышает 254 символа. Попробуйте максимально сократить длину полей в таблице.
Ответить

Вернуться в «MapInfo»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя