Соединение
трех и более таблиц
97
| 14 | 7 | 20040112 | CD |
| 22 | 11 | 20040322 | BUS |
+++++
7 rows in set (0.01 sec)
В этом запросе не так просто определить,
какие условия блока
where
являются условиями соединения, а какие – условиями фильтрации.
Также не
вполне очевидно, какой тип соединения используется (для
установления типа соединения необходимо внимательно рассмотреть
условия
соединения в блоке
where
– нет ли там какихлибо специаль
ных символов), и
сложно определить, не были ли упущены какиелибо
условия соединения.
Вот тот же запрос, записанный с использованием
синтаксиса соединения SQL92:
mysql>
SELECT a.account_id, a.cust_id, a.open_date, a.product_cd
>
FROM account a INNER JOIN employee e
>
ON a.open_emp_id = e.emp_id
>
INNER JOIN branch b
>
ON e.assigned_branch_id = b.branch_id
>
WHERE e.start_date <= '20030101'
>
AND (e.title = 'Teller' OR e.title = 'Head Teller')
>
AND b.name = 'Woburn Branch';
+++++
| account_id | cust_id | open_date | product_cd |
+++++
| 1 | 1 | 20000115 | CHK |
| 2 | 1 | 20000115 | SAV |
| 3 | 1 | 20040630 | CD |
| 4 | 2 | 20010312 | CHK |
| 5 | 2 | 20010312 | SAV |
| 14 | 7 | 20040112 | CD |
| 22 | 11 | 20040322 | BUS |
+++++
7 rows in set (0.36 sec)
Надеюсь,
все согласятся, что понятнее версия, использующая синтак
сис SQL92.
Достарыңызбен бөлісу: