Естественные соединения
213
| 14 | 7 | I | 777777777 |
| 15 | 8 | I | 888888888 |
| 16 | 8 | I | 888888888 |
| 17 | 9 | I | 999999999 |
| 18 | 9 | I | 999999999 |
| 19 | 9 | I | 999999999 |
| 20 | 10 | B | 041111111 |
| 21 | 10 | B | 041111111 |
| 22 | 11 | B | 042222222 |
| 23 | 12 | B | 043333333 |
| 24 | 13 | B | 044444444 |
+++++
24 rows in set (0.02 sec)
Поскольку
задано естественное соединение, сервер проверил описания
таблиц и добавил для этих двух
таблиц условие соединения
a.cust_id
=
c.cust_id
.
Все это хорошо и замечательно, но
что будет, если имена столбцов
в таблицах не совпадают?
Например, в таблице
account
также есть
внешний
ключ к таблице
branch
, но этот столбец в таблице
account
на
зван
open_branch_id
, а не
branch_id
.
Посмотрим, что произойдет, если
попытаться
провести
natural
join
между таблицами
account
и
branch
:
mysql>
SELECT a.account_id, a.cust_id, a.open_branch_id,
> FROM account a NATURAL JOIN branch b;
+++++
| account_id | cust_id | open_branch_id | name |
+++++
| 1 | 1 | 2 | Headquarters |
| 2 | 1 | 2 | Headquarters |
| 3 | 1 | 2 | Headquarters |
| 4 | 2 | 2 | Headquarters |
| 5 | 2 | 2 | Headquarters |
| 6 | 3 | 3 | Headquarters |
| 7 | 3 | 3 | Headquarters |
| 8 | 4 | 1 | Headquarters |
| 9 | 4 | 1 | Headquarters |
| 10 | 4 | 1 | Headquarters |
| 11 | 5 | 4 | Headquarters |
| 12 | 6 | 1 | Headquarters |
| 13 | 6 | 1 | Headquarters |
| 14 | 7 | 2 | Headquarters |
| 15 | 8 | 4 | Headquarters |
| 16 | 8 | 4 | Headquarters |
| 17 | 9 | 1 | Headquarters |
| 18 | 9 | 1 | Headquarters |
| 19 | 9 | 1 | Headquarters |
| 20 | 10 | 4 | Headquarters |
| 21 | 10 | 4 | Headquarters |
| 22 | 11 | 2 | Headquarters |
| 23 | 12 | 4 | Headquarters |