212
Глава 10. И снова соединения
| 20041225 | 0 |
| 20041226 | 0 |
| 20041227 | 0 |
| 20041228 | 1 |
| 20041229 | 0 |
| 20041230 | 0 |
| 20041231 | 0 |
+++
366 rows in set (0.03 sec)
Это один из самых интересных запросов, встречавшихся до сих пор
в данной книге. Его ценность в том, что он включает перекрестные со
единения, внешние соединения, функцию работы с датами, группи
ровку, операции с множествами (
union
all
) и агрегатную функцию
(
count()
). Это не самое элегантное решение заданной проблемы, но оно
послужит примером того, как с небольшой долей творчества и твер
дым знанием языка программирования даже такой редко используе
мый механизм, как перекрестные соединения, можно сделать могуще
ственным инструментом в наборе инструментов SQL.
Естественные соединения
Если вы ленивы (а кто не ленив?), можно выбрать тип соединения, при
котором сервер БД сам определяет необходимые условия соединения
указанных вами таблиц. Известный как
естественное соединение
(
na
tural join
), этот тип соединения делает предположение о необходимых
условиях соединения, полагаясь на идентичные имена столбцов в таб
лицах. Например, таблица
account
включает столбец
cust_id
, являю
щийся внешним ключом к таблице
customer
, первичный ключ которой
также имеет имя
cust_id
. Таким образом, можно написать запрос, ис
пользующий для соединения этих двух таблиц
natural
join
:
mysql>
Достарыңызбен бөлісу: