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

Объединение таблиц по равенству

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

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

Так как в SQL многотабличные запросы выполняются путем сопоставления столбцов, неудивительно, что инструкция SELECT для многотабличного запроса должна содержать условие отбора, которое определяет взаимосвязь между столбцами. Следующий SQL-запрос реализует задание по примеру 2.1, выполнение которого вручную ранее иллюстрировалось на рис. 2.2:

Select Quantity, Sname, City

From Delivery, Supplier

Where Delivery.SID = Supplier.SID

Результат:

Quantity Sname City

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

100 Информатика Ростов-на-Дону

200 Информатика Ростов-на-Дону

400 Вист-Дон Ростов-на-Дону

500 Вист-Дон Ростов-на-Дону

200 Вист-Дон Ростов-на-Дону

600 Вист-Дон Ростов-на-Дону

100 Вист-Дон Ростов-на-Дону

300 Вист-Дон Ростов-на-Дону

200 Вист-Дон Ростов-на-Дону

700 Вист-Дон Ростов-на-Дону

100 Sunrise Москва

500 Sunrise Москва

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

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

500 Формоза Москва

300 Формоза Москва

900 Формоза Москва

500 Формоза Москва

600 Формоза Москва

100 Формоза Москва

500 Формоза Москва

800 Формоза Москва

700 Формоза Москва

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

  • предложение FROM содержит две таблицы, а не одну (Delivery, Supplier);

  • в условии отбора Delivery.SID = Supplier.SID сравниваются столбцы из двух разных таблиц.

Мы будем называть эти столбцы связанными. Данное условие отбора, как и любое другое, уменьшает число строк в таблице результатов запроса. А поскольку запрос двухтабличный, условие отбора на самом деле уменьшает число пар строк в таблице результатов. Фактически в условии отбора заданы те же самые связанные столбцы, которые использовались при выполнении запроса с помощью карандаша и бумаги. Действительно, в этом условии очень хорошо отражена суть сопоставления столбцов, производимого вручную:

Включить в таблицу результатов запроса только те пары, строк, у которых идентификатор поставщика (SID) в таблице поставок (Delivery) равен идентификатору клиента (SID) в таблице поставщиков (Supplier).

Обратите внимание вот на что: в инструкции SELECT ничего не говорится о том, как должен выполняться запрос SQL. Там нет никаких указаний вроде «начните c поставок» или «начните с поставщиков». Вместо этого в запросе сообщается, что должны представлять собой результаты запроса, а способ их получения оставлен на усмотрение СУБД.

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