Научная электронная библиотека
Монографии, изданные в издательстве Российской Академии Естествознания

Работа с запросами

Работая в MapInfo Professional, приходится довольно часто использовать операцию выбора – результат выбора по каким-то критериям можно отображать на тематических картах и можно выполнять выбор данных (записей) в самих таблицах с данными так, как это делают в любых базах данных. Под выборкой понимается подмножество данных, объединенных в одну группу на основании значений одной или нескольких переменных. Подмножества формируются на основании запросов. Слово «Запрос» употребляется вместо общеупотребительного слова «Вопрос». Выборки представляют собой временные таблицы. Когда Вы проводите выбор, MapInfo Professional создает временную таблицу и сохраняет в ней выбранные записи. Над таблицей выборки можно проводить многие из тех операций, которые разрешены для постоянных (базовых) таблиц, например:

● ее можно просматривать в окнах Списка (New Browser Window), Карты (New Map Window), если в ней имеются графические объекты, Графика (New Graph Window);

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

● работая с выборкой, можно редактировать исходную таблицу (если Вы хотите изменить только некоторые записи базовой таблицы, можете сделать выборку и редактировать только ее);

● из выборки тоже можно выбирать данные (записи).

Чтобы сохранить таблицу выборки в виде постоянной таблицы, выполнить команду Файл –> Сохранить запрос (File –> Save Query). Сохранив выборку в постоянную таблицу, можно работать с ней дальше, как со всеми другими таблицами.

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

В MapInfo Professional выборку можно создать с помощью пяти команд и инструментов. Их можно разделить на две категории:

● выбор на экране: инструменты Стрелка, Выбор-в-круге, Выбор-в-области, Выбор-в-рамке, команда Выбрать полностью. Чтобы выбрать записи инструментом, следует указать на соответствующий графический объект (объекты) и обвести их окружностью. Чтобы выбрать все записи некоторого слоя, выполните команду Запрос –> Выбрать полностью (Query –> Select All from Towns, например, при выбранном слое Towns). Чтобы снять выделение объектов, щелкните в любом месте на карте левой кнопкой мыши (рис. 46);

● выбор с помощью запросов: Выбрать (Select…) и SQL-запрос (SQL-Select). В обоих случаях Вы задаете логическое выражение, на основании которого MapInfo Professional выбирает записи. SQL – стандартный язык, используемый для анализа информации из реляционных баз данных (Structured Query Language – «язык структурированных запросов»).

pic_46.tif

Рисунок 46. Инструменты выборки на экране

Команда SQL-запрос (SQL-select) меню Query позволяет создавать таблицы запросов, содержащие данные, которые не присутствуют явно в исходных таблицах. С ее помощью в Maplnfo можно решать следующие задачи:

● создавать вычисляемые колонки – колонки, значения в которых вычисляются на основании значений в уже существующих колонках;

● обобщить данные таким образом, чтобы вместо сумм просматривать суммарные данные по таблице;

● скомбинировать две или более таблиц в одну новую таблицу;

● показывать только те колонки или строки, которые интересуют клиента.

Также в системе Maplnfo существует понятие «обобщения данных» – это выполнение математической операции над значениями всех записей из некоторой колонки таблицы. В отличие от команды Выбрать, которая позволяет выполнять математические операции над отдельными записями, язык SQL дает возможность обобщать данные их всех записей в заданной колонке. В Maplnfo имеется шесть функций обобщения:

● Count* – подсчитывает число записей в группе. В качестве ее аргумента указывается *, так как она применима только ко всей записи, а не к какому-то отдельному полю записи.

● Sum (выражение) – вычисляет сумму значений в <выражении> для всех записей группы.

● Average (выражение) – вычисляет среднее значение в <выражении> для всех записей группы.

● WtAvg (выражение) – вычисляет взвешенное среднее значение в <выражении> для всех записей группы.

● Max (выражение) – находит наибольшее значение в <выражении> среди всех записей группы.

● Min (выражение) – находит наименьшее значение в <выражении> среди всех записей группы.

Этапы выполнения команды Выбрать (Query -> Select…)

В общих чертах процесс выбора объектов с помощью команды Выбрать (Query –> Select…) выглядит следующим образом:

1. Выполните команду Выбрать из меню Запрос (Query –> Select…).

2. Выберите название таблицы, из которой следует выбрать записи.

3. Создайте логическое выражение, которое будет применяться в качестве условия при выборе записей.

4. Выберите колонку, по которой следует сортировать результаты обработки запроса (это не обязательно). Стандартный режим – без сортировки.

5. Чтобы увидеть выбранные записи в окне Списка (Browser Window), установите флажок «Результат в Список» (Browse Results).

6. MapInfo откроет окно Списка для созданной временной таблицы выборки.

MapInfo Professional называет временные таблицы выборок «Запрос1», «Запрос2» (Selection1, Selection2,…) и т.д. При выборе записей с помощью команд Выбрать (Select…) и SQL-запрос (SQL Select) можно задать другое название таблицы. Введите это название в окно «поместить в таблицу» (Store Results in Table). Таблицу запроса можно сохранить на диске под другим именем командой File -> Save Query.

Пример выборки

Таким образом, команда Выбрать (Query –> Select…) позволяет создать выборку (подмножество записей) на основе информации из некоторой таблицы MapInfo Professional, например, найти города (Towns), численность населения которых более 50 тыс. человек.

Откройте таблицу Towns.tab и выполните команду Запрос –> Выбрать (Query –> Select…). Появится диалоговое окно «Выбрать» (Select) (рис. 47).

pic_47.tif

Рис. 47. Диалоговое окно команды Выбрать (Select)

Выполните следующие шаги:

1. В поле «Выбрать записи из таблицы» (Select Records from Table) выберите нужную таблицу – Towns.

2. Нажмите кнопку «Составить» (Assist), появится диалоговое окно «Выражение» (Expression), заполните его, как показано на рис. 48.

pic_48.tif

Рис. 48. Диалоговое окно формирования логического выражения

3. Нажмите кнопку «Проверить» (Verify), чтобы убедиться в правильности синтаксиса запроса. Нажмите кнопку ОК. В результате возвращаемся в диалоговое окно «Выбор» (Select) (рис. 49).

pic_49.tif

Рис. 49. Окно формирования параметров выборки

4. Если был установлен флажок «Результат в Список» (Browse Results), то MapInfo откроет окно Списка по результатам выбора. Выборка также будет выделена в окне Towns Map (Карта).

Команда SQL-запрос (SQL Select…)

С помощью команды SQL-запрос можно создавать выборки, содержащие данные, которые не присутствуют явно в исходных таблицах, т.е. эта команда дает более широкие возможности по сравнению с командой Запрос –> Выбрать… (Query –> Select…).

pic_50.tif

Рис. 50. Результат выбора

Пример выборки с помощью SQL-запроса

Расчет плотности населения

Например, рассмотрим таблицу с данными по городам, содержащую информацию о численности населения (Population) и площади населенных пунктов (Sq). Нужно получить список тех городов, плотность населения в которых превышает 500 человек на квадратный километр. Будем использовать формулу для вычисления плотности населения:

● численность населения / площадь.

Откройте таблицу с данными по городам (в новом окне: Окно –> Новое окно списка или Window –> New Browser Window…). Выполните команду Запрос –> SQL-запрос (Query –> SQL-Select…). Появится диалог SQL-запрос (SQL-Select).

pic_51.tif

Рис. 51. Окно запроса и окно с данными

Заполните его следующим образом:

1. Находясь в окне «из таблиц» (from Tables), выберите таблицу с данными (нам нужна таблица Towns). Если нужны еще какие-то таблицы, их тоже надо выбрать из списка доступных таблиц. В нашем примере достаточно одной таблицы. Именно список таблиц будет служить основанием для выбора колонок с данными, поэтому начинаем работу с этого (второго по расположению) окна.

2. В окне Выбрать колонки (Select Columns) удалить звездочку (она – шаблон, выбирающий ВСЕ колонки) и перечислить колонки, которые нужны для выборки. Окно позволяет использовать колонки из разных таблиц и создавать новые с помощью формул и функций. Выбрать колонки: название города (Name), численность населения (Population), площадь (Sq). Эти колонки разделяем запятыми. Построим формулу расчета плотности – это будет новая колонка, вычисляемая с помощью операции деления.

3. Теперь необходимо составить выражение, согласно которому будут выбраны города с плотностью населения более 500 человек на квадратный километр.

Перейти в окно «С условием» (where Condition). Опять ввести формулу расчета плотности и построить условие (> 500).

4. Отсортировать по названию городов (окно Сортировать по колонкам или Order by Columns).

5. Перейти в окно «и поместить в таблицу» (into Table Named) и ввести имя новой таблицы, например, Плотность. Нажмите кнопку «Проверить» (Verify). MapInfo проверит синтаксическую правильность предложений Sql-запроса.

6. Проверьте, что установлен флажок «Результат в Список» (Browse Results). Если этот режим не установлен, MapInfo создает временную таблицу, но не показывает ее. Чтобы показать эту таблицу, Вам нужно выполнить команду Список из меню Окно и в ней выбрать имя новой таблицы – Плотность (Window –> New Browser Window).

pic_52.tif

Рис. 52. Окно SQL-запроса

7. Нажмите ОК.

pic_53.tif

Рис. 53. Результат выполнения запроса

pic_54.tif

Рис. 54. Окно запроса с вводом новых имен колонкам

pic_55.tif

Рис. 55. Результат переименования колонок

Как видно из рисунка, названия колонок в результате выборки совпадают с именами колонок из таблиц и с формулой расчета плотности. Можно изменить названия колонок, введя рядом с именем колонки (справа от него) новое название в кавычках через пробел, например, так, как показано на рис. 54.


Предлагаем вашему вниманию журналы, издающиеся в издательстве «Академия Естествознания»
(Высокий импакт-фактор РИНЦ, тематика журналов охватывает все научные направления)

«Фундаментальные исследования» список ВАК ИФ РИНЦ = 1,674