Глава 5. Запрос к нескольким таблицам
гично, если некоторые сотрудники зарегистрированы в отделе с ID 99,
которого нет в таблице
department
, эти сотрудники не попадут в резуль
тирующий набор. Если требуется включить все строки той или иной
таблицы независимо от наличия соответствия, можно воспользоваться
внешним соединением (
outer join ), но мы рассмотрим это в главе 10.
В предыдущем примере в блоке
from
я не указал тип используемого со
единения. Однако если требуется соединить две таблицы путем внут
реннего соединения, это следует явно указать в блоке
from
. Вот тот же
пример с добавлением типа соединения (обратите внимание на ключе
вое слово
INNER
(внутренний)):
mysql>
SELECT e.fname, e.lname, d.name > FROM employee e INNER JOIN department d > ON e.dept_id = d.dept_id; ++++
| fname | lname | name |
++++
| Susan | Hawthorne | Operations |
| Helen | Fleming | Operations |
| Chris | Tucker | Operations |
| Sarah | Parker | Operations |
| Jane | Grossman | Operations |
| Paula | Roberts | Operations |
| Thomas | Ziegler | Operations |
| Samantha | Jameson | Operations |
| John | Blake | Operations |
| Cindy | Mason | Operations |
| Frank | Portman | Operations |
| Theresa | Markham | Operations |
| Beth | Fowler | Operations |
| Rick | Tulman | Operations |
| John | Gooding | Loans |
| Michael | Smith | Administration |
| Susan | Barker | Administration |
| Robert | Tyler | Administration |
++++
18 rows in set (0.00 sec)
Если тип соединения не задан, сервер по умолчанию проведет внутрен
нее соединение. Однако, как выяснится в главе 10, есть несколько ти
пов соединений, поэтому указание точного типа требуемого соедине
ния должно войти в привычку.
Если имена столбцов, используемых для соединения двух таблиц, сов
падают (что имеет место в предыдущем запросе), можно вместо под
блока
on
применить подблок
using
:
mysql>