В этом уроке мы рассмотрим INNER JOIN
или внутреннее соединение. Это соединение возвращает сочетания строк из двух таблиц, которые удовлетворяют условию соединения.
Применяем INNER JOIN
Допустим, у нас есть таблица с авторами и таблица с книгами. Мы хотим отобразить на сайте список книг вместе с именами их авторов.
Таблица с книгами:
books
book_id | book_author_id | title |
---|---|---|
500 | 1 | Евгений Онегин |
501 | 2 | Анна Каренина |
502 | 2 | Война и мир |
Таблица с авторами:
authors
author_id | author_name |
---|---|
1 | А.С. Пушкин |
2 | Л.Н. Толстой |
3 | А.П. Чехов |
books.book_author_id
ссылается на authors.author_id
— это связь, которая позволяет узнать имя автора книги.
Воспользуемся INNER JOIN
, чтобы получить список авторов с их книгами:
SELECT
author_name,
title
FROM books -- первая таблица
INNER JOIN authors -- вторая таблица
ON book_author_id = author_id; -- условие соединения таблиц
View on DBFiddle
Имя первой таблицы указывается после FROM
. Следом идет инструкция INNER JOIN
и имя второй таблицы. Далее идет слово ON
и условие связывания таблиц.
Результат выполнения запроса:
author_name | title |
---|---|
А.С. Пушкин | Евгений Онегин |
Л.Н. Толстой | Анна Каренина |
Л.Н. Толстой | Война и мир |
С помощью INNER JOIN
мы смогли построить список, в котором рядом с книгой указано имя ее автора. Результат содержит только такие пары, в которых есть и автор, и книга.
С помощью схемы опишем работу INNER JOIN
в общем виде:
Схема работы INNER JOIN. Результат содержит только те пары, для которых выполнилось условие соединения — совпал цвет строк.
Для каждой строки из первой таблицы INNER JOIN
пытается найти строки из второй таблицы так, чтобы выполнилось условие соединения. Если во второй таблице будет несколько подходящих строк — в результат попадут все такие пары. Если в первой или во второй таблице есть строки, для которых не нашлась подходящая пара — они не попадут в результат.
Выводы
В этом уроке мы изучили как пользоваться INNER JOIN
— инструментом для связывания строк из разных таблиц. Это соединение отбирает только такие пары строк, которые удовлетворяют специальному условию соединения.
Для полного доступа к курсу нужен базовый план
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.