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

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

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

Сообщение Красная шапочка » 18 ноя 2009, 17:03

При использовании в предложении Group By оператора Select более 5 полей выдает ошибку "Слишком много предложений Group By", а выборку нужно сгруппировать по 7 полям. Кто-нибудь сталкивался с этим? Как можно выйти из этой ситуации?

Boris
Гуру
Сообщения: 4205
Зарегистрирован: 10 апр 2006, 22:34
Репутация: 433
Откуда: Париж

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

Сообщение Boris » 21 ноя 2009, 01:01

А зачем вообще делать такую крайне специфичную вещь в MI? Если это такая насыщенная атрибутивная таблица, то стоит ее сперва обсчитать в какой-нибудь СУБД или табличном редакторе.
7 уровней группировки дадут таблицу практически равную исходной.

reasonat
Завсегдатай
Сообщения: 257
Зарегистрирован: 10 июн 2009, 12:21
Репутация: 0
Откуда: Екатеринбург
Контактная информация:

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

Сообщение reasonat » 21 ноя 2009, 10:04

Можно просто пару раз сделать запрос с группировкой. Первый раз на 4-5 полей, и сохранить копию выборки как нормальную таблицу, потом с нее еще раз запрос с группировкой по оставшимся полям сделать. И усе.

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

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

Сообщение Красная шапочка » 22 ноя 2009, 15:43

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

Boris
Гуру
Сообщения: 4205
Зарегистрирован: 10 апр 2006, 22:34
Репутация: 433
Откуда: Париж

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

Сообщение Boris » 22 ноя 2009, 19:44

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

reasonat
Завсегдатай
Сообщения: 257
Зарегистрирован: 10 июн 2009, 12:21
Репутация: 0
Откуда: Екатеринбург
Контактная информация:

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

Сообщение reasonat » 23 ноя 2009, 10:22

Анализировать в Access удобнее. А на один раз провести группировку - проще в мапинфе, не связываясь с настройками еще одной замечательной программы. Пересчитать ее, правда, уже нельзя. Разве что сохранить все операции в макрос в окне MapBasic, и при необходимости повторить снова, с другими данными.
И кстати, данные полей пропадать не должны. Если в запросе указаны все нужные поля, они в результате и останутся. Вот только такой задачи представить не могу, требующей аж по 7ми полям группировку. Смысла в такой таблице от остальных полей?

Andrew
Активный участник
Сообщения: 134
Зарегистрирован: 01 окт 2009, 08:52
Репутация: 3
Откуда: Москва

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

Сообщение Andrew » 23 ноя 2009, 11:46

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

Ответить

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

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

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