Некравцева Т.А., Корелина Т.В.
МЕТОДИЧЕСКИЕ УКАЗАНИЯ
к выполнению лабораторной работы № 5
по дисциплине «Геоинформационные системы»
для студентов дневной и заочной формы обучения
по специальности
230201 «Информационные системы и технологии».
Воронеж 2004
ОБЩИЕ МЕТОДИЧЕСКИЕ УКАЗАНИЯ ПО ВЫПОЛНЕНИЮ ЛАБОРАТОРНОЙ РАБОТЫ
Целью лабораторной работы является знакомство с настольной геоинформационной системой MapInfo и создание собственной тематической карты. Для достижения этой цели необходимо:
Познакомиться с понятием выборки и её видами;
Изучить инструментальные возможности выборки в MapInfo.
В результате выполнения лабораторных работ студент должен знать:
Знать основные составляющие таблицы MapInfo;
Возможности выборки;
Основные характеристики выборки;
Инструментальные возможности выборки.
Используемое в процессе работы оборудование: ПЭВМ класса IBM PC/486 стандартной конфигурации.
Перед выполнением лабораторной работы каждый студент должен изучить правила техники безопасности и пожарной безопасности при работе с ПЭВМ в лаборатории кафедры.
Указания по сдаче зачета преподавателю.
Для того, чтобы сдать зачет по лабораторной работе необходимо:
предъявить оформленный отчет;
ответить на контрольные вопросы.
ТЕОРЕТИЧЕСКИЙ МАТЕРИАЛ ДЛЯ ДОМАШНЕГО ИЗУЧЕНИЯ
Что такое "Выборка"?
Наряду с тем, что MapInfo позволяет отображать данные на географических картах, мощный аппарат анализа составляет способность MapInfo группировать и организовывать эти данные. Разбив данные на логические группы, Вы можете проводить анализ на основании одной или нескольких переменных величин.
Пусть, например, имеется корзина фруктов. Вы хотите организовать фрукты в различные категории, исходя из различных признаков:
Поместить все яблоки в одну группу;
Поместить все цитрусовые в одну группу (апельсины, лимоны, грейпфруты);
Поместить все фрукты, названия которых начинаются на гласную букву, в одну группу
(апельсины, яблоки, абрикосы).
Возможно большое количество способов группировки этих фруктов. Некоторые могут попасть в несколько категории (скажем, апельсины – и цитрусовые, и начинаются на гласную). Вы также можете группировать фрукты не по одной, а по нескольким переменным - поместить в одну группу все цитрусовые, названия которых начинаются на гласную букву.
Можно группировать фрукты по странам, где они растут, – выбрать все фрукты, произрастающие в Южной Америке. Наконец, Вы можете группировать фрукты случайным образом - поместить в одну группу яблоки и лимоны, а во вторую группу поместить сливы и апельсины.
MapInfo может создавать подобные группы из данных. В MapInfo такие группы называются выборками. Под выборкой понимается подмножество данных, объединенных в одну группу на основании значений одной или нескольких переменных.
Например, рассмотрим таблицу записей о клиентах. Вы можете создать подмножество клиентов, проживающих не далее 50 км от Новгорода. Или подмножество клиентов, сделавших покупки более чем на 1000000 рублей. Или подмножество клиентов, чьи фамилии начинаются на букву "В".
Приведенные тут предложения, на основании которых формируются подмножества данных, называют запросами. Слово "запрос" употребляется вместо общеупотребимого слова "вопрос": "Кто из моих клиентов потратил более 1000000 рублей?" "Кто из моих клиентов проживает в 50 км от Новгорода?"
Как и в примере с фруктами, существует множество способов группировки данных. Некоторые записи попадают более чем в одну категорию. Вы также можете группировать данные по нескольким переменным. Кто из клиентов живет в радиусе 50 км от Новгорода и сделал покупки на сумму более 1000000?
Характеристики Выборки
Выборки представляют собой временные таблицы. Когда Вы проводите выбор, MapInfo создает временную таблицу и сохраняет в ней выбранные записи.
Над таблицей выборки можно проводить многие из тех операций, которые разрешены для постоянных (базовых) таблиц, например:
Ее можно просматривать в окнах Списка, Карты (если в ней имеются графические объекты), Графика и Отчета.
Ее можно вырезать и копировать в буфер обмена, а также вставлять в другие таблицы или даже использовать в других программах.
Работая с выборкой, можно редактировать исходную таблицу. Если Вы хотите изменить только некоторые записи базовой таблицы, Вы можете сделать выборку и редактировать только эту выборку.
Из выборки в свою очередь можно выбирать записи.
Чтобы сохранить таблицу выборки в виде постоянной таблицы, выполните команду Файл > Создать копию. Сохранив выборку в постоянную таблицу, Вы можете работать с ней дальше, как со всеми другими таблицами.
Таблицы выборок полностью зависят от тех таблиц, на основании которых они были созданы. Так, при закрывании базовой таблицы все связанные с ней таблицы выборок будут закрыты.
Как делать Выборки
В MapInfo выборку можно создать с помощью пяти команд и инструментов. Их можно разделить на две категории:
Выбор на экране: инструменты Стрелка, Выбор-в-круге, Выбор-в-6ласти Выбор-в-рамке, команда ВЫБРАТЬ ПОЛНОСТЬЮ. Чтобы выбрать записи инструментом, следует указать на соответствующий графический объект (объекты) или обвести их окружностью. Чтобы выбрать все записи некоторого слоя, выполните команду ЗАПРОС > ВЫБРАТЬ ПОЛНОСТЬЮ.
Выбор с помощью запросов: ВЫБРАТЬ, SQL-ЗАПРОС. В обоих случаях Вы задаете логическое выражение, на основании которого MapInfo выбирает записи. Например, выражение ПРОДАЖИ > 20000000 означает, что MapInfo выберет только записи о продажах на сумму более 20 млн.
Выбор на экране
Чтобы выбрать объект на карте, этот объект должен лежать на доступном слое. Чтобы сделать слой доступным, выполните команду Управление слоями из меню Карта и установите режим "Доступный" для данного слоя.
Когда Вы выбираете объект на доступном слое карты, MapInfo выделяет этот объект методом, заданным в разделе "Выделение выборки" диалога "Режимы" (меню Настройка). При выборе же объекта на изменяемом слое MapInfo показывает вокруг такого объекта маркеры (черные квадраты).
При наличии нескольких доступных слоев в окне Карты MapInfo выбирает объекты с самого верхнего из них. Например, в окне Карты доступными являются слои районов и областей. Если слой районов является верхним, то MapInfo выбирает объекты с него. И, наоборот, если выше лежит слой областей, MapInfo производит выбор со слоя областей. Когда Вы используете инструмент Стрелка, MapInfo отображает всплывающие подсказки для самого верхнего доступного слоя. По мере продвижения курсора к другим объектам, информация во всплывающих подсказках изменяется. Вы можете отключить всплывающие подсказки с помощью команды Настройки > Режимы > ОкНо карты.
Аналогично, чтобы проводить поиск по областям, они должны лежать на самом верхнем из доступных слоев. Пусть имеется слой почтовых индексов и слой границ областей. Чтобы выбрать все объекты, имеющие заданный почтовый индекс, слой почтовых индексов должен быть верхним среди перечисленных слоев. Чтобы выбирать объекты в заданной области, слой областей должен лежать выше слоя почтовых индексов. Изменить порядок слоев па карте можно с помощью команды Карта > Управление слоями.
Чтобы выбрать объект из таблицы, соответствующей не самому верхнему слою, следует нажимать клавишу CTRL при выборе. Допустим, например, что есть три доступных слоя: слой областей, слой районов и слой городов. Вы хотите выбрать объекты на слое областей, но он является самым нижним слоем карты. Не отпуская клавишу CTRL, укажите еще раз на карту инструментом Стрелка. Теперь Вы работаете со вторым слоем. Не отпуская CTRL, еще раз укажите снова на карту инструментом Стрелка. Теперь Вы работаете с третьим слоем (самым нижним) - слоем областей.
Другие методы поиска
Вы можете сами рисовать области (многоугольники), в которых следует проводить поиск. Возьмем таблицу улиц и таблицу розничных торговых точек. Так как улицы представляют собой линии, а не области, Вы не можете провести поиск в рамках отдельного квартала. Однако Вы можете создать область с помощью инструмента Прямоугольник. И затем провести поиск объектов в данной области.
Кроме того, можно создавать области для поиска командой БУФЕР. Команда БУФЕР используется для создания областей вокруг точек, линий и других областей. Например, чтобы найти всех клиентов, проживающих в пределах пяти километров от Волоколамского шоссе, можно с помощью команды Буфер создать многоугольник, куда войдут все территории на расстоянии пяти километров от этого шоссе.
Командой БУФЕР можно создавать даже области вокруг областей. Пусть, например, Вы хотите найти все радиостанции на расстоянии не более 20 км от границ некоторого района. С помощью команды БУФЕР можно создать многоугольник, в который войдут местности в пределах 20 км от границы заданного района.
Чтобы проводить поиск в многоугольнике, должны быть доступными два слоя: слой, из объектов которого будет строиться выборка, и слой, содержащий область, в которой будет проводиться поиск.
Выбор с помощью запросов
Запрос - это синоним слова "вопрос", употребляемый в базах данных.
В этом примере выбираются больницы Центрального округа, расположенные рядом с метро
Команда Выбрать позволяет создать выборку (подмножество записей) на основании информации из некоторой таблицы MapInfo. Например:
Какие клиенты сделали покупки на 2000000 рублей и более?
Кто из моих клиентов живет в Раменском районе?
Команда SQL-ЗАПРОС позволяет решать следующие задачи в MapInfo:
Создать вычисляемые колонки - колонки, значения в которых вычисляются на основании значений в уже существующих колонках;
Обобщить данные таким образом, чтобы вместо сумм просматривать суммарные данные по таблице;
Скомбинировать две или более таблицы в одну новую таблицу;
Показывать только те колонки и строки, которые Вас интересуют.
Команда Выбрать
Команда ВЫБРАТЬ позволяет формулировать запросы к таблице. С ее помощью можно выбирать записи и сопоставленные им графические объекты по значениям их атрибутов. Таким образом, можно выделять в окне Карты или Списка объекты, удовлетворяющие некоторому критерию. Результаты запросов можно сохранять в виде таблиц, просматривать в окнах Списков, Карт и Графиков.
В команде ВЫБРАТЬ можно формулировать такие запросы как;
Покажите все районы, где средний доход жителей превышает 6 000 000 рублей.
Покажите все районы, где средний возраст населения составляет 42 года.
Покажите все районы, где средний доход жителей превышает 6 000 000 рублей, а средний возраст населения составляет 42 года.
Покажите все записи о заказах, сделанных в июле и сентябре.
Покажите все города в Ярославской, Владимирской и Костромской областях, население которых превышает 100 000 жителей.
При работе с окном Списка MapInfo выделяет записи (строки Списка), удовлетворяющие заданному в запросе критерию. При работе с окном Карты выделяются соответствующие этим записям графические объекты. Если же Вы работаете с окнами обоих типов, то выделяются и записи, и графические объекты. Во всех случаях MapInfo автоматически создает рабочую таблицу с названием "Selection" (или "Выборка"), которая содержит результаты обработки запроса. Эту таблицу можно просматривать в окне Списка, Карты или Графика как любую другую таблицу.
Кроме того, ее можно сохранить под другим именем командой Создать копию.
Создание выражений
Чтобы выполнить поиск по запросу, необходимо задать логическое выражение, которое мы обычно используем, когда задаем вопросы. Например, имеется таблица о сдаваемом внаем жилье. Если Вы хотите создать временную таблицу жилья, стоимость аренды которого ниже $800 в месяц, следует задать выражение:
РЕНТА < 800
где РЕНТА – это название колонки, содержащей данные о ежемесячной арендной плате. Знак "<" означает "меньше чем".
MapInfo ищет в таблице все записи, которые удовлетворяют заданному условию, и помещает последние во временную таблицу, которую можно просматривать в окне Карты, Списка, Графика и производить над ней дальнейшие операции.
Можно производить арифметические операции над данными. Пусть надо создать временную таблицу жилья, общая стоимость которого меньше $800. Общая стоимость образуется из арендной платы и ежемесячных коммунальных платежей. Задайте выражение:
РЕНТА + ПЛАТЕЖИ < 800
То есть, укажите MapInfo, что надо сложить число из колонки РЕНТА с числом из колонки ПЛАТЕЖИ и сравнить сумму с числом 800.
Имеется два способа создания выражений. Во-первых, можно ввести выражение напрямую. Этот способ обычно быстрее при задании простых выражений. Второй способ состоит в том, что можно нажать кнопку "Составить" в диалоге "Выбрать" и построить выражение с помощью окошек в диалоге "Выражение". Такой способ обычно используется начинающими пользователями или при построении сложных выражений.
Диалог "Выражение" содержит три окошка списка, с помощью которых можно составить выражение: "Колонки", "Операторы" и "Функции".
"Колонки"
Это окошко содержит список всех колонок таблицы, по которой будет производиться выбор. Если таблица содержит колонки, вычисленные по предыдущим запросам, то и эти колонки перечисляются тоже.
"Операторы"
В этом окошке содержится перечень математических и логических операторов. Среди операторов – сложение, вычитание, умножение, деление, знаки больше, меньше и равно. С помощью этих символов можно создавать математические формулы.
Например, рассмотрим таблицу торговых агентов, среди которых Вы хотите выбрать тех агентов, полный объем продаж, у которых в месяц составляет в среднем $2000. Общий объем вычисляется как сумма продаж и комиссионных.
Пусть в таблице имеются две следующие колонки: ПРОДАЖИ , содержащая данные о годовом объеме продаж каждого агента, и КОМИССИЯ , содержащая годовой размер комиссионных каждого агента. Вы можете составить следующее выражение:
(ПРОДАЖИ + КОМИССИЯ) / 12 < 2000
Согласно выражению, MapInfo сложит число в колонке ПРОДАЖИ с числом из колонки КОМИССИЯ. Однако это дает общий годовой объем. Вы же хотите получить среднемесячный объем. Поэтому Вы делите сумму на 12. Полученное значение сравнивается с 2000.
В списке "Операторы" содержатся также логические операции, например, AND, NOT, OR и LIKE.
"Функции"
Это окошко содержит математические функции, имеющие один и более параметров и возвращающие значения. Эти функции применяются для получения значений элементарных функций над данными из некоторой колонки. Например:
abs(<число>)
выдает абсолютное значение чисел из заданной колонки.
Например, метеоролог хочет выбрать все дни, когда температура в его городе была на 10 градусов выше или ниже средней по стране. Для этого используется колонка СР_РАЗН , содержащая разницу температур в городе и в среднем по стране. Можно составить такое выражение:
СР_РАЗН < -10 Or СР_РАЗН > 10
Оно означает, что Мар1пЬ должна выбрать все записи с разницей меньше -10 или больше +10. Однако, выражение можно задать и по-другому:
abs(СР_РАЗН ) > 10
В этом случае MapInfo будет выбирать все записи, абсолютное значение разницы в которых превосходит 10.
Окошко "Функции" содержит много других функций, в том числе функции площади, периметра, синуса, косинуса и дат. Полный список функций приведен в Приложении D "Создание выражений" в Справочнике MapInfo.
Команда SQL-запрос
Выборка - это подмножество данных, сгруппированных но значениям одной или нескольких переменных. Выборки создаются путем постановки вопросов (посылки запросов) о данных. Сколько клиентов прожинает в Ногинском районе? В каком районе самый высокий уровень преступлений? MapInfo хранит ответы на такие вопросы во временных таблицах, называемых таблицами запросов.
Рассмотрим более мощную команду - SQL-ЗАПРОС.
Команда ВЬБРАТЬ позволяет формулировать достаточно сложные запросы, а команда SQL-запрос еще мощнее. Записи в таблице запросов, созданной командой Выбрать не содержат никакой дополнительной информации по сравнению с исходной таблицей. Это, по существу, те же записи Они просто собраны вместе.
С помощью команды SQL-ЗАПРОС можно создавать таблицы запросов, содержащие данные которые не присутствуют явно в исходных таблицах.
Диалог "SQL-запрос" – один из наиболее сложных в MapInfo. Не пугайтесь. Разобравшись в значениях каждого окошка, Вы без особого труда сможете формулировать сложные запросы. Вы можете напрямую вводить выражения в текстовые окошки или формировать их, выбирая элементы из окошек списков.
Проще всего разобрать работу с этим диалогом на подробном примере. В этом примере будет использована таблица WORLD из комплекта поставки MapInfo, так что Вы сможете сами проверить работу SQL-запроса. Мы коротко описали каждый шаг. Подробный разбор каждого окошка будет дан после примера.
Сохранение запросов
Любой запрос, созданный в диалогах "Выбрать" и SQL-Запрос" может быть сохранен как таблица запроса MapInfo. Таблицы запросов включают два файла: .TAB и .QRY. После того, как Вы выполнили команды в диалогах "Выбрать" и "SQL-запрос", выполните команду ФАЙЛ >Сохранить Запрос и, таким образом, запрос сохранится в виде таблицы. Когда Вы открываете эту таблицу, автоматически открываются таблицы, на основе которых выполняется запрос и далее этот запрос выполняется.
Внимание: Запросы, сделанные на основе других запросов, не могут быть сохранены в виде таблицы или Рабочего набора.
Шаблоны запросов
Шаблоны запросов можно создавать, когда Вы сохраняете запрос или SQL-Запрос в виде шаблона и перезагружаете его. При этом Вы избавляетесь от проблем вводить параметры запроса, каждый раз, когда Вы этот запрос используете. Диалоги "Запрос" и "SQL-Запрос" имеют кнопки Сохранить... и Загрузить..., позволяющие облегчить Вам эту задачу. Шаблоны запросов полезны для воссоздания запросов в случае обновлении таблиц, использующихся в таких запросах, или для выполнения запросов к таблице, имеющей такие же поля как и у таблицы, к которой изначально был сделан запрос.
Сохранение шаблонов
После завершения составления запроса или SQL-Запроса, нажмите кнопку Сохранить, чтобы сохранить запрос в виде шаблона или файла запроса. Откроется диалог "Сохранить запрос в файле". Задайте имя файлу запроса, укажите каталог и нажмите кнопку Сохранить. Файлы запросов сохраняются с расширением .QRY и размещаются в каталоге, определенном в Настройках (НАСТРОЙКИ > Режимы > Каталоги).
Внимание: Запросы, сохраняемые в шаблонах, могут быть не полными или синтаксически некорректными.
Загрузка шаблона
Можно загрузить любой шаблон запроса. Для загрузки нажмите кнопку Загрузить. Появится диалог "Загрузить запрос из файла". В списке появятся файлы с расширением .QRY. Выберите .QRY файл, который Вам нужен, и нажмите кнопку Открыть. Появится диалог "Запрос" или "SQL-Запрос", с окошками, заполненными в соответствии с сохраненными запросами. Далее просто выполните запрос.
Вычисляемые колонки
Вычисляемой называется колонка таблицы запроса, которая содержит результат вычислений выражений по значениям из колонок исходных таблиц. В рассмотренном примере вычисляемой является колонка плотности населения.
Стандартный текст в окошке "Выбрать колонки" – звездочка (*), которая показывает, что все колонки базовых таблиц следует включить в таблицу запроса. В остальных случаях надо удалить звездочку и перечислить только необходимые колонки.
Вы можете создавать несколько вычисляемых колонок. Но помните: чем больше вычисляемых колонок Вы создаете, тем дольше MapInfo будет обрабатывать запрос.
В выражениях для вычисляемых колонок можно использовать функции обобщения count, sum, avg, wtavg, max и min. Например:
sum (Население) – даст численность населения всего мира.
sum(Area(obj), "sq km") – выдаст суммарную площадь всех стран мира.
Псевдонимы названий колонок
При создании вычисляемой колонки MapInfo использует выражение в качестве названия колонки. Оно может быть неудобочитаемым. Вы можете падать псевдоним - свое название колонки.
Например, колонка плотности населения в окне Списка из предыдущего примера будет иметь название:
Население / Area(obj, "sq km")
Мы можем дать этой колонке более содержательное название. Чтобы переименовать колонку, добавьте свое название в окошко "Выбрать колонки" при перечислении используемых колонок. Это название должно следовать сразу после вычисляемого выражения, отделяться от него пробелом и быть заключено в двойные кавычки. Например:
Страна, Население/ Area(obj, "sq km") "ПЛ _ НАСЕЛЕНИЯ "
При создании временной таблицы запроса MapInfo назовет колонку плотности населения ПЛ_НАСЕЛЕНИЯ .
Псевдонимы можно задавать не только для вычисляемых колонок. Например, если каждая страна рассматривается уж отдельный регион сбыта, можно переименовать колонку Страна в ТЕРРИТОРИЯ . Это делается аналогично вычисляемым колонкам:
Страна "ТЕРРИТОРИЯ", Население / Area(obj, "sq km") "ПЛ _ НАСЕЛЕНИЯ".
Обобщение данных
Под обобщением данных мы понимаем выполнение математической операции над значениями всех записей из некоторой колонки таблицы. В отличие от команды ВЫБРАТЬ, которая позволяет выполнять математические операции над отдельными записями, язык SQL дает возможность обобщать данные из всех записей в заданной колонке.
MapInfo для каждой группы значений в заданной колонке (колонках) создает отдельную строку. При обобщении данных надо указать:
Как группировать записи.
Как суммировать (обобщать) данные.
Например, имеется таблица торговых агентов и объемов продаж за три месяца:
ТОРГ_ПРЕД | МЕСЯЦ | ПРОДАЖИ |
Иванов | Май | 1200 |
Петросян | Май | 900 |
Гольдштейн | Май | 1100 |
Иванов | Июнь | 900 |
Петросян | Июнь | 1400 |
Гольдштейн | Июнь | 600 |
Иванов | Июль | 1200 |
Петросян | Июль | 700 |
Гольдштейн | Июль | 1000 |
MapInfo может также вычислить общин объем продаж, сделанных каждым из агентов, если в диалоге "SQL-запрос" указать:
В окошке "Выбрать колонки": ТОРГ_ПРЕД, sum(ПРОДАЖИ)
"Сгруппировать по колонке": ТОРГ_ПРЕД
ТОРГ_ПРЕД | sum(ПРОДАЖИ) |
Иванов | 3300 |
Петросян | 3000 |
Гольдштейн | 2700 |
или вычислить среднемесячный объем продаж каждого агента:
Выбрать колонки": ТОРГ_ПРЕД, avg(ПРОДАЖИ)
Сгруппировать по колонке": ТОРГ_ПРЕД
ТОРГ_ПРЕД | avg(ПРОДАЖИ) |
Иванов | 1100 |
Петросян | 1000 |
Гольдштейн | 900 |
или общий объем продаж за каждый месяц:
Выбрать колонки": МЕСЯЦ, sum (ПРОДАЖИ)
Сгруппировать по колонке": МЕСЯЦ
ТОРГ_ПРЕД | sum(ПРОДАЖИ) |
Май | 3200 |
Июнь | 2900 |
Июль | 2900 |
В MapInfo имеется шесть функций обобщения:
Count(*): подсчитывает число записей в группе. В качестве ее аргумента указывается *, так как она применима только ко всей записи, а не к какому-то отдельному полю записи.
Sum (выражение): вычисляет сумму значений в <выражении> для всех записей группы.
Average (выражение): вычисляет среднее значение в <выражении> для всех записей группы.
WtAvg (выражение): вычисляет взвешенное среднее значение <выражения> для всех записей группы.
Мах (выражение): находит наибольшее значение в <выражении> среди всех записей группы.
Min (выражение): находит наименьшее значение в <выражении> среди всех записей группы.
Порядок полей
Порядок полей, используемых в объединении таблиц не имеет значения. Любой из вариантов синтаксиса приемлем:
Select * from А,В where A.field1 = B.field1
Select * from А,В where B.field1 = A.field1
Таким образом, учтите, что когда Вы переключаете порядок географических операндов, географические операторы так же должны измениться. Следующие операторы производят одинаковые результаты:
Select * from states, cities where states.obj contains cities.obj
Select * from states, cities where cities.obj within states.obj
Порядок Предложений
Порядок, в котором предложения объединения таблиц осуществляют объединение, не имеет значения. Например, каждое из нижеследующих предложений правильно:
Select * from Us_custg,States,City_125 where Us_custg.state = States.state and States.state = City_125.state and Us_custg.order_amt > 10000
Select * from Us_custg,States,City_125 where States.state = City_125.state and States.state = City_125.state and Us_custg.order_amt > 10000
Select * from Us_custg,States,City_125 where Us_custg.state = States.state and Us_custg.order_amt > 10000 and States.state = City_125.state
Обработка ошибок
Если составленное условие Where использует OR как логический оператор, то MapInfo выдаст сообщение об ошибке. Обычно такое сообщение появляется тогда, когда MapInfo не может найти объединение между двумя таблицами. Например, если Вы ввели следующее некорректное условие:
Select * from А,В where A.field1 = B.field1 or A.field1 = B.field2
Появится сообщение об ошибке "No join specified between A and B. Invalid join condition in Where clause".
Внешнее объединение
Внешнее объединение SQL имеет отношение к процессу объединения данных из большой таблицы и таблицы меньших размеров, в результате которого Вы хотите получить результат из всех записей большой таблицы, объединенных с некоторыми записями из малой таблицы. Если Вы используете стандартное объединение, то возникает проблема. Стандартное объединение в SQL-Запросе производит таблицу только с теми записями, которые совпадают. Вам могут понадобиться пустые поля, где нет совпадения. Например, предположим, Вы имеете таблицу со списком всех квартир в здании. Также есть таблица, содержащая записи всех жильцов. Обе таблицы имеют поле с номерами квартир. Ваша задача создать таблицу для всех квартир с фамилиями жильцов. Некоторые квартиры свободны и имеют пустые поля в графе жильцы.
На первом шаге создается подмножество данных, где имеется соответствие квартир и жильцов в них.
1. Выполните команду Запрос > SQL-ЗАПРОС. Заполните диалог следующим образом:
2. Нажмите ОК. Ваш запрос появится в окне Списка. Необходимо сохранить этот запрос к базовой таблице.
3. Выполните команду Файл > СОХРАНИТЬ КОПИЮ. Появится диалог "Создать копию таблицы". Выберите подходящий каталог для Вашего файла и назовите таблицу RESULT.TAB. Нажмите кнопку Сохранить.
4. Выполните команду Файл > Открыть таблицу и откройте таблицу RESULT. Эта таблица включает в себя те записи из обоих таблиц, где имеется соответствие.
5. Далее Вы должны выбрать записи из таблицы КВАРТИРЫ, которые не имеют соответствия в таблице жильцов. Выполните команду ЗАПРОС > SQL-Запрос и заполните диалог следующим образом:
6. Результирующая таблица запроса - это список всех квартир, которых нет в таблице RESULT. Чтобы включить эти записи в таблицу RESULT, нужно присоединить их. Выполните команду Таблица > Добавить записи в таблицу.
7. Присоедините таблицу результатов последнего запроса к таблице RESULT. Будет присоединен список свободных квартир к списку занятых квартир. Если колонки не присоединились правильно после применения операции Append, обратитесь к документации MapInfo для решения этой проблемы.
УКАЗАНИЯ ПО ОФОРМЛЕНИЮ ОТЧЕТА
Отчет по лабораторной работе должен содержать:
титульный лист с указанием группы, фамилии студента, номера и названия лабораторной работы, ученой степени, должности и фамилии преподавателя, принимающего отчет по лабораторной работе;
ответы на вопросы к домашнему заданию;
ответы на вопросы к лабораторной работе;
последовательные этапы выполнения задания с необходимыми пояснениями.
Некравцева Т.А., Корелина Т.В.
МЕТОДИЧЕСКИЕ УКАЗАНИЯ
к выполнению лабораторной работы № 5
по дисциплине «Геоинформационные системы»
для студентов дневной и заочной формы обучения
по специальности
230201 «Информационные системы и технологии».
Воронеж 2004
Дата: 2019-12-10, просмотров: 230.