Изучаем sql



Pdf көрінісі
бет178/261
Дата28.07.2022
өлшемі1,6 Mb.
#147825
1   ...   174   175   176   177   178   179   180   181   ...   261
Байланысты:
Изучаем SQL ( PDFDrive )

SELECT cust_id, name
> FROM business;


198
Глава 10. И снова соединения
+++
| cust_id | name |
+++
| 10 | Chilton Engineering |
| 11 | Northeast Cooling Inc. |
| 12 | Superior Auto Body |
| 13 | AAA Insurance Inc. |
+++
4 rows in set (0.01 sec)
Из 13 строк таблицы клиентов только четыре относятся к юридиче
ским лицам. И поскольку у одного из юридических лиц два счета, в об
щей сложности с юридическими лицами связаны пять строк таблицы
account
.
Но что делать, если требуется, чтобы запрос возвращал 
все
счета, но
при этом включал название фирмы, только если счет связан с юриди
ческим лицом? Это пример, когда необходимо 
внешнее соединение
(
outer join
) таблиц 
account
и 
business
:
mysql> 
SELECT a.account_id, a.cust_id, b.name
> FROM account a LEFT OUTER JOIN business b
> ON a.cust_id = b.cust_id;
++++
| account_id | cust_id | name |
++++
| 1 | 1 | NULL |
| 2 | 1 | NULL |
| 3 | 1 | NULL |
| 4 | 2 | NULL |
| 5 | 2 | NULL |
| 6 | 3 | NULL |
| 7 | 3 | NULL |
| 8 | 4 | NULL |
| 9 | 4 | NULL |
| 10 | 4 | NULL |
| 11 | 5 | NULL |
| 12 | 6 | NULL |
| 13 | 6 | NULL |
| 14 | 7 | NULL |
| 15 | 8 | NULL |
| 16 | 8 | NULL |
| 17 | 9 | NULL |
| 18 | 9 | NULL |
| 19 | 9 | NULL |
| 20 | 10 | Chilton Engineering |
| 21 | 10 | Chilton Engineering |
| 22 | 11 | Northeast Cooling Inc. |
| 23 | 12 | Superior Auto Body |
| 24 | 13 | AAA Insurance Inc. |
++++
24 rows in set (0.00 sec)


Внешние соединения
199
Внешнее соединение включает все строки одной таблицы и вводит дан
ные второй таблицы только в случае обнаружения соответствующих
строк. В данном случае в результат вошли все строки таблицы 
account
,
поскольку задано 
left
outer
join
(левостороннее внешнее соединение)
и таблица 
account
находится в левой части описания соединения. Стол
бец 
name
имеет значение 
null
для всех строк, кроме четырех строк кли
ентовюридических лиц (
cust_id
10, 11, 12 и 13). Вот аналогичный за
прос с внешним соединением, но с таблицей 
individual
вместо 
business
:
mysql> 


Достарыңызбен бөлісу:
1   ...   174   175   176   177   178   179   180   181   ...   261




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет