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

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

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

Select * from A,B 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 States.state = City_125.state and States.state = Us_custg.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 A,B 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-ЗАПРОС. Заполните диалог следующим образом:

MapInfo Professional 7.5

 

© May 2004 MapInfo Corporation. All rights reserved.

266

MI_UG.PDF

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

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

2.Нажмите ОК. Ваш запрос появится в окне Списка. Необходимо сохранить этот запрос.

3.Выполните команду ФАЙЛ > СОХРАНИТЬ КОПИЮ. Появится диалог “Создать копию таблицы”. Выберите подходящий каталог для Вашего файла и назовите таблицу

"RESULT.TAB". Нажмите кнопку СОХРАНИТЬ.

4.Выполните команду ФАЙЛ > ОТКРЫТЬ ТАБЛИЦУ и откройте таблицу "RESULT". Эта таблица включает в себя те записи из обоих таблиц, где имеется соответствие.

5.Далее Вы должны выбрать записи из таблицы "КВАРТИРЫ", которые не имеют соответствия в таблице "ЖИЛЬЦЫ". Выполните команду ЗАПРОС > SQL-ЗАПРОС и заполните диалог следующим образом:

Результирующая таблица запроса – это список всех квартир, которых нет в таблице RESULT. Чтобы включить эти записи в таблицу RESULT, нужно присоединить их.

6.Выполните команду ТАБЛИЦА > ДОБАВИТЬ ЗАПИСИ В ТАБЛИЦУ. Будет присоединен список свободных квартир к списку занятых квартир. Если колонки не присоединились правильно после применения операции ДОБАВИТЬ..., обратитесь к документации MapInfo для решения этой проблемы.

MapInfo Professional 7.5

 

© May 2004 MapInfo Corporation. All rights reserved.

267

MI_UG.PDF

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

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

Поиск информации внутри колонки с помощью функции InStr

Функция InStr проверяет, содержит ли заданная строка указанную подстроку. Эта функция работает с символьными полями и производит поиск подстроки (символа или группы символов), начиная с указанного символа строки.

Например, Вам надо выбрать все улицы в таблице "ДОРОГИ", содержащие слово “Большая” в колонке "УЛИЦЫ".

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

Если функция InStr встретит слово “Большая,” она вернет его положение.

Синтаксис функции INSTR определяется следующим образом:

INSTR ( положение, строка, подстрока), где:

положение – это стартовая позиция поиска

строка – это строковый символ или поле, содержащее строковый символ, который надо найти

подстрока – это строковый символ, который следует найти

Допустим, одна из записей в данных выглядит так:

“Это образец функции вставки.”

Вы хотите найти позицию “образец”. Функция INSTR будет выглядеть следующим образом:

INSTR(1,” Это образец функции вставки.”,”образец”)

Когда операция будет выполнена, возвратится величина 5.

Внимание: Если строковый символ, который Вы ищете, не существует, то будет возвращено значение 0.

MapInfo Professional 7.5

 

© May 2004 MapInfo Corporation. All rights reserved.

268

MI_UG.PDF

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

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

Выбор записей таблицы, отсутствующих в другой таблице

Следующий SQL-оператор позволяет Вам выбрать записи из одной таблицы, которых нет в другой таблице, основываясь на поле, общем для двух таблиц. Например, есть таблица "ОБЛАСТИ1" и надо выбрать все записи из таблицы "ОБЛАСТИ1", которых нет в таблице

"ГОРОДА125".

1. Выполните команду ЗАПРОС > SQL-ЗАПРОС.

Внимание: Синтаксис оператора следующий: NOT <имя_колонки> IN(SELECT

<имя_колонки> FROM <второй_таблицы>.

2.Этот оператор SQL осуществляет выбор всех записей в таблице ОБЛАСТИ1.Tab, которые не содержатся в таблице ГОРОДА125.Tab.

Выбор четных или нечетных записей из таблицы

Каждая запись в таблице имеет свой порядковый номер в колонке RowID. Допустим, Вам надо выбрать все четные записи из таблицы. Самый простой путь – использовать колонку

RowID.

Для выбора четных записей сделайте следующее:

1.Выполните команду ЗАПРОС > SQL-ЗАПРОС.

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

MapInfo Professional 7.5

 

© May 2004 MapInfo Corporation. All rights reserved.

269

MI_UG.PDF

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