Читайте также:
|
|
В предыдущем разделе в примерах внешних соединений было задано left outer join. Ключевое слово left свидетельствует о том, что табли_
200 Глава 10. И снова соединения
ца, находящаяся в левой части блока from, отвечает за определение числа строк в результирующем наборе, а таблица в правой части пре_ доставляет значения столбцов в случае обнаружения соответствия. Рассмотрим следующий пример:
mysql> SELECT c.cust_id, b.name | ||||
_> FROM | customer c LEFT OUTER JOIN business b | |||
_> | ON | c.cust_id = b.cust_id; | ||
+_________+________________________+ | ||||
| cust_id | | name | | | ||
+_________+________________________+ | ||||
| | | | NULL | | | |
| | | | NULL | | | |
| | | | NULL | | | |
| | | | NULL | | | |
| | | | NULL | | | |
| | | | NULL | | | |
| | | | NULL | | | |
| | | | NULL | | | |
| | | | NULL | | | |
| | | | Chilton Engineering | | |
| 11 | Northeast Cooling Inc. |
| | | | Superior Auto | Body | | | |
| | | | AAA Insurance | Inc. | | |
+_________+________________________+ 13 rows in set (0.00 sec)
Блок from определяет левостороннее внешнее соединение. Таким обра_ зом, в результирующий набор входят все 13 строк таблицы customer, а таблица business поставляет значения во второй столбец результи_ рующего набора для четырех клиентов_юридических лиц. Если вы_ полнить такой же запрос, но указать правостороннее внешнее соедине_ ние, будет получен следующий результат:
mysql> | SELECT c.cust_id, b.name | |
_> | FROM | customer c RIGHT OUTER JOIN business b |
_> | ON | c.cust_id = b.cust_id; |
+_________+________________________+
| cust_id | name |
+_________+________________________+
| 10 | Chilton Engineering |
| 11 | Northeast Cooling Inc. |
| | | | Superior Auto | Body | | | |
| | | | AAA Insurance | Inc. | | |
+_________+________________________+ 4 rows in set (0.00 sec)
Теперь число строк результирующего набора определяется количест_ вом строк таблицы business. Вот почему в этом множестве всего четыре строки.
Внешние соединения | |
Помните, что оба запроса осуществляют внешние соединения. Ключе_ вые слова left и right просто сообщают оптимизатору БД, какая табли_ ца может иметь пробелы в данных. Если нужно провести внешнее со_ единение таблиц А и В таким образом, чтобы в результирующий набор входили все строки из А и те строки из В, для которых есть соответст_ вующие данные, можно задать или A left outer join B, или B right outer join A.
Дата добавления: 2015-08-17; просмотров: 52 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Внешние соединения | | | Трехсторонние внешние соединения |