Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Konspekt_Informatsionnoe_obesp_SU.doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
446.46 Кб
Скачать

6.3.2Внутренние и внешние объединения

Примеры рассмотренные в предыдущем разделе формально относятся к так называемым внутренним объединениям. Внутреннее объединение возвращает строки, только если условия объединения выполнено. Приведем еще раз пример запроса с использованием оператора JOIN (соединять).

Вывести всех клиентов с указанием города.

SELECT ГОРОДА.НАЗВАНИЕ, КЛИЕНТ.НАЗВАНИЕ(ИМЯ)

FROM ГОРОДА

INNER JOIN КЛИЕНТ ON ГОРОДА.IDN=КЛИЕНТ.IDN_ГОРОДА

Результат этого запроса.

Москва

Москва

Санкт-Петербург

Пермь

Пермь

МММ

Хопер

Алиса

ИВС

ПГТУ

Обратите внимание, что ни город Париж ни клиент Рога&Копыта в результаты запроса не попали.

На то, что мы имеем дело с внутренним объединением, указывает ключевое слово INNER (внутренний). Помимо внутренних объединений часто имеет смысл использовать внешние объединения, которые возвращают строки независимо от того выполнено условия объединение или нет. Когда условия объединения не выполнено для данной строки во внешнем объединении, поля из внутренней таблицы возвращаются как NULL.

Различают правые и левые внешние объединения, которые различаются тем, из какой таблицы (внутренней или внешней) извлекаются все строки. Приведем примеры.

Левое внешнее объединение:

Вывести всех клиентов, если для клиента указан город, показать его.

SELECT ГОРОДА.НАЗВАНИЕ, КЛИЕНТ.НАЗВАНИЕ(ИМЯ)

FROM ГОРОДА

LEFT OUTER JOIN КЛИЕНТ ON ГОРОДА.IDN=КЛИЕНТ.IDN_ГОРОДА

Результат этого запроса.

Москва

Москва

Санкт-Петербург

Пермь

Пермь

МММ

Хопер

Алиса

ИВС

ПГТУ

Рога&Копыта

Обратите внимание, что был выведен клиент Рога&Копыта, для которого город не указан.

В этом запросе были использованы ключевые слова LEFT (левый) OUTER (внешний).

Правое внешнее объединение:

Вывести все города и клиентов из этих городов.

SELECT ГОРОДА.НАЗВАНИЕ, КЛИЕНТ.НАЗВАНИЕ(ИМЯ)

FROM ГОРОДА

RIGHT OUTER JOIN КЛИЕНТ ON ГОРОДА.IDN=КЛИЕНТ.IDN_ГОРОДА

Результат этого запроса.

Москва

Москва

Санкт-Петербург

Пермь

Пермь

Париж

МММ

Хопер

Алиса

ИВС

ПГТУ

В результате теперь присутствует Париж.

6.4 Вложенные запросы

6.4.1Исходная база данных

Эта база данных далее будет использоваться в примерах.

Таблица Клиент

IDN

IDN_ГОРОДА

ИМЯ

РЕКВИЗИТЫ

IDN_БАНКА

204

101

Петров

--------------

311

205

104

Кузнецов

--------------

314

206

102

Иванов

--------------

317

208

104

Золин

--------------

311

210

105

Киров

--------------

323

212

103

Павлов

--------------

317

215

105

Петренко

--------------

318

Таблица Города

IDN

НАЗВАНИЕ

102

Минск

101

Москва

103

Саратов

104

Пермь

105

Киев

Таблица Банки

IDN

РЕКВИЗИТЫ

311

МММ

314

Альфа – банк

317

Сбербанк

323

Менатеп

318

Западуралбанк

Таблица Перемещение

IDN

ПОРЯДКОВ№

КОД_ДОК

ДАТА_ДОК

НОМЕР_ДОК

IDN_

ГРУППЫ

IDN_

МАТ.ЦЕН

КОЛ-ВО

ЦЕНА

402

501

20

402

503

25

404

505

6

.

404

504

7

404

506

5

406

508

15

406

507

25

Некоторые столбцы не заполнены т.к. не используются в примерах.

Таблица Группы

IDN

НАЗВАНИЕ

402

Газ. вода

404

Шоколад

406

Сигареты

Таблица Мат. ценности

IDN_ГРУППЫ

IDN_МАТ.ЦЕН

IDN_МАТ.ЦЕН

402

501

Fanta

402

503

Sprite

404

505

Mars

404

504

Twix

404

506

Шок

406

508

Кама

406

507

L&M

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