Внутреннее соединение INNER JOIN
В предыдущем уроке мы рассмотрели общую структуру многотабличного запроса:
SELECT поля_таблиц
FROM таблица_1
[INNER | {LEFT | RIGHT | FULL} [OUTER]] JOIN таблица_2
ON условие_соединения
[...]- [ ]необязательная часть
- { a | b }один из вариантов
- ...можно повторить
- поля_таблиц
Столбцы из любых соединяемых таблиц, которые попадут в результат.
- таблица_1
- Первая таблица, к которой присоединяются остальные.
- INNER
Внутреннее соединение: в результат попадут только строки, для которых нашлась пара. Это вид соединения по умолчанию, поэтому INNER можно не писать.
Ключевое словоНеобязательный- LEFT | RIGHT | FULL
Внешнее соединение: левое, правое или полное. Кроме пар, в результат попадут и строки без пары из левой, правой или обеих таблиц.
Ключевое словоНеобязательный- OUTER
Только подчёркивает, что соединение внешнее. Пишется после LEFT, RIGHT или FULL и на результат не влияет.
Ключевое словоНеобязательный- таблица_2
Таблица, которую присоединяем. Чтобы присоединить ещё таблицы, добавьте для каждой свой JOIN ... ON ....
- условие_соединения
Правило, по которому строки двух таблиц находят друг друга, например Payments.family_member = FamilyMembers.member_id.
Говоря о многотабличном запросе со внутренним соединением, общая структура выглядит так:
SELECT поля_таблиц
FROM таблица_1
[INNER] JOIN таблица_2
ON условие_соединения
[...]- [ ]необязательная часть
- ...можно повторить
- поля_таблиц
Столбцы из любых соединяемых таблиц, которые попадут в результат.
- таблица_1
- Первая таблица, к которой присоединяются остальные.
- INNER
Внутреннее соединение: в результат попадут только строки, для которых нашлась пара. Это вид соединения по умолчанию, поэтому INNER можно не писать.
Ключевое словоНеобязательный- таблица_2
Таблица, которую присоединяем. Чтобы присоединить ещё таблицы, добавьте для каждой свой JOIN ... ON ....
- условие_соединения
Правило, по которому строки двух таблиц находят друг друга, например Payments.family_member = FamilyMembers.member_id.
Например, запрос может выглядеть следующим образом:
MySQL 8.4SELECT family_member, member_name FROM Payments INNER JOIN FamilyMembers ON Payments.family_member = FamilyMembers.member_id
Понятие внутреннего соединения
Внутреннее соединение — соединение, при котором находятся пары записей из двух таблиц, удовлетворяющие условию соединения, тем самым образуя новую таблицу, содержащую поля из первой и второй исходных таблиц.
Для наглядности это выглядит следующим образом:

Так как в нашем условии указано равенство полей Payments.good_id и Goods.good_id, то при внутреннем соединении в итоговой выборке окажутся только записи, где в обеих таблицах есть одинаковое значение good_id.
Использование WHERE для соединения таблиц
Для внутреннего соединения таблиц также можно использовать оператор WHERE. Например, вышеприведённый запрос, написанный с помощью INNER JOIN, будет выглядеть так:
MySQL 8.4SELECT family_member, member_name FROM Payments, FamilyMembers WHERE Payments.family_member = FamilyMembers.member_id