Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Rukovodstvo_polzovatelya_MapInfo_Professional.pdf
Скачиваний:
718
Добавлен:
05.03.2016
Размер:
11.58 Mб
Скачать

MapInfo Professional 7.5 Руководство пользователя (Полное)

Глава 8: Выборки по запросам

Создание новой таблицы из подмножества файлов

Многие файлы, которые используются в MapInfo, включают в себя больше объектов и информации, чем необходимо для решения конкретной задачи. Во многих случаях легче работать с частями файлов данных, чем с полными файлами. Например, если Вы обрабатываете криминальную статистику для какого-либо района, используя данные переписи, то Вам не нужны данные по переписи для всего государства. Необходимо извлечь лишь данные по переписи для этого района.

Существуют два пути для создания новой таблицы, содержащей выборочные записи из исходной таблицы. Можно интерактивно выбрать объекты, которые Вас интересуют, с помощью инструментов выборки и поместить их в новую таблицу. Или можно использовать SQL-ЗАПРОС для выбора необходимых объектов, используя при этом функции SQL. Пример использования команды SQL-ЗАПРОС посмотрите тут: Пример 1 – Расчет плотности

населения с помощью SQL-запроса на странице 117

Сохранение итоговой таблицы в этих двух случаях будет одинаковой процедурой.

Внимание: Большинство запросов, которые будут сделаны в следующих примерах, должны использовать или команду SQL-ЗАПРОС или более простую команду ВЫБРАТЬ. Поскольку SQL-ЗАПРОС более сложный и чаще используемый, то в следующих примерах рассмотрим диалог “SQL-Запрос”.

Интерактивный выбор объектов

1.Выполните команду ФАЙЛ > ОТКРЫТЬ ТАБЛИЦУ и откройте таблицу в окне Карты.

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

ВЫБОР, ВЫБОР-В-КРУГЕ или ВЫБОР-В-ОБЛАСТИ.

MapInfo Professional 7.5

 

© May 2004 MapInfo Corporation. All rights reserved.

251

MI_UG.PDF

MapInfo Professional 7.5 Руководство пользователя (Полное)

Глава 8: Выборки по запросам

3.Выполните команду ФАЙЛ > СОХРАНИТЬ КОПИЮ и сохраните таблицу "Selection". Таблица может быть сохранена под любым именем.

Команда SQL-запрос

Выборка – это подмножество данных, сгруппированных по значениям одной или нескольких переменных. Выборки создаются путем постановки вопросов (посылки запросов) о данных. Сколько клиентов проживает в Ногинском районе? В каком районе самый высокий уровень тяжких преступлений? MapInfo хранит ответы на такие вопросы во временных таблицах, называемых таблицами запросов.

В начале этой главы мы разобрали, как создавать выборки с помощью команды ЗАПРОС > ВЫБРАТЬ. Теперь рассмотрим более мощную команду – SQL-ЗАПРОС.

Команда ВЫБРАТЬ позволяет формулировать достаточно сложные запросы, а команда SQL-ЗАПРОС еще мощнее. Записи в таблице запросов, созданной командой ВЫБРАТЬ, не содержат никакой дополнительной информации по сравнению с исходной таблицей. Это, по существу, те же записи. Они просто собраны вместе.

С помощью команды SQL-ЗАПРОС можно создавать таблицы запросов, содержащие данные, которые явно не присутствуют в исходных таблицах.

Диалог “SQL-запрос” – один из наиболее сложных в MapInfo. Не пугайтесь. Разобравшись в значениях каждого окошка, Вы без особого труда сможете формулировать сложные запросы. Вы сможете напрямую вводить выражения в текстовые окошки или составлять их, выбирая элементы из окошек Списков.

Проще всего разобрать работу с этим диалогом на подробном примере. В этом примере будет использована таблица WORLD, поставляемая в комплекте комплекте поставки MapInfo, так что Вы сможете сами проверить работу SQL-запроса. Подробный разбор каждого окошка будет дан после примера.

MapInfo Professional 7.5

 

© May 2004 MapInfo Corporation. All rights reserved.

252

MI_UG.PDF

MapInfo Professional 7.5 Руководство пользователя (Полное)

Глава 8: Выборки по запросам

Пример 1 Расчет плотности населения с помощью SQL-запроса

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

НАСЕЛЕНИЕ / ПЛОЩАДЬ

Таблица WORLD содержит колонку численности населения (НАСЕЛЕНИЕ), но не содержит данных о площадях государств. Однако поскольку каждой записи таблицы WORLD соответствуют графические объекты, MapInfo автоматически рассчитывает площадь каждого государства.

Откройте таблицу WORLD.TAB и увеличьте его на все окно. Выполните команду ЗАПРОС > SQL-ЗАПРОС. Появится диалог "SQL-запрос".

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

1.В поле Из таблиц выберите WORLD из окошка списка Таблицы. В этом поле указываются все таблицы, используемые для построения SQL-запроса. В данном примере используется только одна таблица – WORLD, но могут использоваться две, три и более таблиц.

2.Окошко Из таблиц надо заполнить до того, как Вы начнете заполнять окошко Выбрать колонки. На основании содержимого окошка Из таблиц MapInfo создает список колонок, которые можно упоминать в окошке Выбрать колонки.

3.Нажав клавишу TAB, переместитесь в окошко Выбрать колонки и удалите там звездочку (*), чтобы перечислить колонки, которые следует включить в таблицу запроса. Звездочка же означает, что надо включить все колонки.

Функция поля Выбрать колонки подобна команде СПИСОК > ВНЕСТИ ПОЛЯ. Однако, в отличие от команды ВНЕСТИ ПОЛЯ (в которой могут быть показаны только колонки, реально существующие в таблице), окошко Выбрать колонки позволяет использовать колонки из разных таблиц и создавать новые колонки с помощью математических функций..

Внимание: Звездочка в данном поле используется для обозначения всех колонок всех исходных таблиц.

Напомним, что таблица запроса – это временная таблица, в которой MapInfo хранит результаты поиска по запросу.

4.Выберите Страна из списка Колонки.

5.Выберите Население из списка Колонки.

Теперь надо вычислить плотность населения. Вспомним, что плотность вычисляется делением численности населения на площадь страны. В таблице нет данных о площадях. Но их можно вычислить с помощью функции Area, которая находит площадь графических объектов, соответствующих заданной записи. Поскольку таблица WORLD содержит графические объекты, то MapInfo может рассчитать площадь каждой страны и, таким образом, плотность населения.

6.Выберите знак деления (/) из списка Операторы.

7.Выберите "Area" из списка Функции.

Таким образом мы создали вычисляемую колонку. Вычисляемой называется колонка, содержащая результат вычислений, производимых над значениями из других колонок. При создании таблицы запроса MapInfo включит в нее две колонки: "Страна"

MapInfo Professional 7.5

 

© May 2004 MapInfo Corporation. All rights reserved.

253

MI_UG.PDF

MapInfo Professional 7.5 Руководство пользователя (Полное)

Глава 8: Выборки по запросам

и "НАСЕЛЕНИЕ/Area(obj, "sq km")" или колонку плотности населения. Во всех географических функциях MapInfo указывает единицы измерения. Если Вам нужно получить площадь в квадратных милях, вместо "sq km" введите "sq mi".

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

8.С помощью клавиши TAB переместитесь в окошко С условием.

9.Выберите “население” в поле списка Колонки. Выберите знак деления (/) из списка

Операторы.

10.Выберите "Area" из списка Функции.

11.Выберите знак “больше” (>) из списка Операторы

12.Введите значение 500.

Мы построили выражение "Выбрать все страны с плотностью населения (Население/Area(obj, "sq km")) больше (>) 500 человек на квадратный километр”.

13.Оставьте пустым поле Сгруппировать по колонкам.

14.С помощью клавиши TAB переместитесь в поле Порядок задать по колонкам. В окошке Порядок задать по колонкам можно задать порядок, в котором записи

будут помещены в таблицу запроса. Вы выбрали "Страна". Это означает, что записи должны следовать так, чтобы значения в поле "Страна" располагались в алфавитном порядке.

15.С помощью клавиши TAB переместитесь в окошко И поместить в таблицу.

Введите Плотность.

MapInfo дает таблицам запросов следующие стандартные названия: "Query1", "Query2", "Query3" и т.д. Вы можете задавать свое название таблицы запроса в окошке И поместить в таблицу. MapInfo теперь назовет результирующую таблицу “Плотность”.

16.Нажмите кнопку ПРОВЕРИТЬ. MapInfo проверит синтаксическую правильность предложений SQL-запроса. Если будут обнаружены ошибки, MapInfo покажет сообщение: какого типа ошибка и в каком окошке она допущена. Проверьте, установлен ли флажок Результат в Список.

17.В режиме Результат в Список MapInfo создает окно Списка для таблицы запроса. Если этот режим не установлен, MapInfo создает временную таблицу запроса, но не показывает ее. Чтобы просмотреть эту таблицу, Вам нужно будет выполнить команду ОКНО > НОВЫЙ СПИСОК и из списка таблиц выбрать “Плотность”.

MapInfo Professional 7.5

 

© May 2004 MapInfo Corporation. All rights reserved.

254

MI_UG.PDF

MapInfo Professional 7.5 Руководство пользователя (Полное)

Глава 8: Выборки по запросам

18.Нажмите OK. MapInfo создаст следующую таблицу.

Первая колонка содержит название страны, вторая – население, третья – плотность населения. Страны перечислены в алфавитном порядке, и плотность населения в них превышает 500 человек на квадратный километр (Население/Area(obj, "sq km") > 500).

Пример 2 Вычисление суммарной плотности населения мира с SQL-

запросом

Чтобы с помощью оператора SQL-ЗАПРОС выбрать только государства с высокой плотностью населения, сделайте следующее:

1.Выполните команду ФАЙЛ > ОТКРЫТЬ ТАБЛИЦУ и откройте таблицу WORLD в окне Карты.

2.В меню ЗАПРОС нажмите команду SQL-ЗАПРОС и заполните диалог “SQL-запрос”.

MapInfo Professional 7.5

 

© May 2004 MapInfo Corporation. All rights reserved.

255

MI_UG.PDF

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]