Страница 1 из 1
Подскажите как обновить таблицу с автоматическим заполнением
Добавлено: 12 ноя 2014, 06:39
nikomuro
Имеется таблица (допустим поля id, name, type) в поле name содержится множество значений типа (д/с №4, д/с Мишутка, школа 5, школа 46 и тд) в поле type они объединены в общие названия типа (д/с и школы). Нужно присвоить в автоматическом режиме всем садикам (поле type) номер 1, всем школам номер 2, всем магазинам свой единый номер и тд для других объектов. RowId нумерует все по порядку сквозной нумерацией Как же решить проблему. Объектов около 400 штук. Сейчас сортирую таблицу по полю Type и присваиваю номера вручную, а кое где через обновить таблицу. Вообще не дело...
Re: Подскажите как обновить таблицу с автоматическим заполне
Добавлено: 12 ноя 2014, 07:51
LightMen
Настройки -> показать окно mapbasic ->
select * from Untitled where name like "%школа%"
update Selection Set type="1"
select * from Untitled where name like "%д/с%"
update Selection Set type="2" и т.д.
где Untitled - имя таблицы
после каждой строки нажимать "Enter"
ну или можете таблицу здесь прикрепить
Re: Подскажите как обновить таблицу с автоматическим заполне
Добавлено: 12 ноя 2014, 08:34
Игорь Белов
Если подстрока, определяющая тип, находится в начале поля name, достаточно сортировать таблицу по полю name, чтобы визуально определить имеющиеся типы: подряд будут идти записи с именами, начинающимися с "д/с", "магазин", "школа" и др.
Если оставаться в рамках MapInfo, для каждого типа делаем выборку:

- Запрос
- select.png (4.72 КБ) 9573 просмотра
( Если ключевая подстрока может находиться в произвольном месте ("неизвестная школа", "новый д/с"), вместо функции Left$() используем InStr(). )
Далее обновляем поле type для выборки:

- Обновить колонку
- update.png (4.6 КБ) 9573 просмотра
Более быстрым может быть альтернативное решение — использование электронных таблиц. Если значения name могут дублироваться, придётся заполнить поле id уникальными значениями (RowID). Экспортируем таблицу в CSV. Откроем CSV каким-нибудь экселем. Отсортируем таблицу по полю name. Ткнём в ячейку правее "д/с ..." и введём "=1". Подведём указатель мыши к правому нижнему углу ячейки и растащим значение "1" по всем детским садикам. Аналогично присваиваем значение другим типам. Сохраняем CSV, закрываем эксель. Открываем CSV в MapInfo. Объединяем исходную таблицу и CSV по полю id (или name, если значения name уникальны). Готово.
Re: Подскажите как обновить таблицу с автоматическим заполне
Добавлено: 12 ноя 2014, 09:02
Старый Йети
Полностью согласен с предыдщими оратороми

Как вариант
Запрос->Выбрать... заданная таблица, согласно условию: name like ("%д/с%") Результат в таблицу SELECT,
Таблица-> обновить колонку...
Ну это, типа, стандартными средствами, без высшей математики MapBasic'а
Re: Подскажите как обновить таблицу с автоматическим заполне
Добавлено: 12 ноя 2014, 11:01
nikomuro
Согласен с советами, уже и выбрал все что нужнно через like, и отсортировал (через утилитку) не просто таблицу. Обновлять же типовые значения вручную мне не хочется. бывает что встречается 40 одинаковых уникальных значений, им еще можно присвоить единый номер через Update Selection Set ID = 2 через строку basic (так намного быстрее чем вызывать меню), но могут встретиться и 10-40 объектов уникальных разного типа, и что мне их вручную нумеровать. А если что то поменяется... Понятно что выбираешь после места вставки до конца объекты RowId+1, но нумеровать все как то долго и "непрофессионально"
Re: Подскажите как обновить таблицу с автоматическим заполне
Добавлено: 12 ноя 2014, 12:15
ginpetr
Update tabname set number=1*int(type=any("школа","детсад",...))+2*int(type=any("магазин","аптека",...)+3*...
Можно так сделать или в этом роде. Аможно не обновлять совсем. Подозреваю, что номера Вам нужны для подписей. Если так то эту формулу можно вписать прямо в подписи и не париться с обновлением- ведь данные могут поменяться и придётся заново обновлять.
Re: Подскажите как обновить таблицу с автоматическим заполне
Добавлено: 12 ноя 2014, 12:25
nikomuro
Кстати, вариант предложен отличный, можно составить такое выражение для обновления, а уникальные значения получить запросом, и потом соединить это все в том же Exel и полученный запрос закинуть в MapInfo
Re: Подскажите как обновить таблицу с автоматическим заполне
Добавлено: 12 ноя 2014, 12:40
nikomuro
Ура, решение найдено, решение банальное, точное и самое главное простое. Выбираем с группировкой по типу, копируем в эксель, присваиваем номера, открываем в мапинфо, обновляем с объединением. ВОТ И ВСЕ ДЕЛОВ ТО
Re: Подскажите как обновить таблицу с автоматическим заполне
Добавлено: 16 ноя 2014, 00:34
Boris
nikomuro писал(а):Ура, решение найдено, решение банальное, точное и самое главное простое. Выбираем с группировкой по типу, копируем в эксель, присваиваем номера, открываем в мапинфо, обновляем с объединением. ВОТ И ВСЕ ДЕЛОВ ТО
это решение ничем не хуже других, т.к. подразумевает, что вы классификатор (или словарь) не держите в уме, а хотя бы один раз его набиваете. НО с тем же успехом можно было и сэкономить пару-тройку операций, просто сохранив групповой запрос как родную таблицу в мапинфо. Которую потом и заполнить.
Re: Подскажите как обновить таблицу с автоматическим заполне
Добавлено: 27 ноя 2014, 06:47
nikomuro
впринципе можно было сделать и так, на самом деле сокращается путь на два действия, даже на три