СОЗДАНИЕ ОБЬЕДИНЕНИЯ
Предположим что вы хотите поставить в соответствии вашему продавцу ваших заказчиков в городе в котором они
живут, поэтому вы увидите все комбинации продавцов и заказчиков для этого города. Вы будете должны брать
каждого продавца и искать в таблице Заказчиков всех заказчиков того же самого города. Вы могли бы сделать
это, введя следующую команду ( вывод показывается в Рисунке 8.1 ):
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 - это то запрашиваемое значение
которое комбинация выберет для вывода. То же самое будет затем выполнено для каждого продавца в таблице
Продавцов ( у некоторых из которых небыло никаких заказчиков в этих городах).