Сейчас на сайте
Сейчас на сайте 0 пользователей и 0 гостей.

Создание объединения

Предположим, что вы хотите поставить в соответствии вашему продавцу ваших заказчиков в городе, в котором они живут, поэтому вы увидите все комбинации продавцов и заказчиков для этого города. Вы будете должны брать каждого продавца и искать в таблице Заказчиков всех заказчиков того же самого города. Вы могли бы сделать это, введя следующую команду ( вывод показывается в Рисунке 8.1 ):

SELECT Customers.cname, Salespeople.sname, Salespeople.city FROM Salespeople, Customers WHERE Salespeople.city = Customers.city;

SQL Execution Log

SELECT Customers.cname, Salespeople.sname,

Salespeople.city

FROM Salespeople, Customers

WHERE Salespeople.city = Customers.city

cname cname city
Hoffman Peel London
Hoffman Peel London
Liu Serres San Jose
Cisneros Serres San Jose
Hoffman Motika London
Clemens Motika London

Рисунок 8.1: Объединение двух таблиц

Так как это поле city имеется и в таблице Продавцов и таблице Заказчиков, имена таблиц должны использоваться, как префиксы. Хотя это необходимо только когда два или более полей имеют одно и то же имя, в любом случае это хороша идея включать имя таблицы в объединение для лучшего понимания и непротиворечивости. Несмотря на это, мы будем, в наших примерах далее, использовать имена таблицы только когда необходимо, так что будет ясно, когда они необходимы, а когда нет. Что SQL в основном делает в объединении - так это исследует каждую комбинацию строк двух или более возможных таблиц, и проверяет эти комбинации по их предикатам. В предыдущем примере, требовалась строка продавца Peel из таблицы Продавцов и объединение ее с каждой строкой таблицы Пользователей, по одной в каждый момент времени. Если комбинация производит значение которое делает предикат верным, и если поле city из строк таблиц Заказчика равно London, то Peel - это то запрашиваемое значение, которое комбинация выберет для вывода. То же самое будет затем выполнено для каждого продавца в таблице Продавцов ( у некоторых из которых не было никаких заказчиков в этих городах).