SQL: Join

Теория: INNER JOIN (внутреннее соединение)

В этом уроке мы рассмотрим INNER JOIN или внутреннее соединение. Это соединение возвращает сочетания строк из двух таблиц, которые удовлетворяют условию соединения.

Применяем INNER JOIN

Допустим, у нас есть таблица с авторами и таблица с книгами. Мы хотим отобразить на сайте список книг вместе с именами их авторов.

Таблица с книгами:

books

book_idbook_author_idtitle
5001Евгений Онегин
5012Анна Каренина
5022Война и мир

Таблица с авторами:

authors

author_idauthor_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_nametitle
А.С. ПушкинЕвгений Онегин
Л.Н. ТолстойАнна Каренина
Л.Н. ТолстойВойна и мир

С помощью INNER JOIN мы смогли построить список, в котором рядом с книгой указано имя ее автора. Результат содержит только такие пары, в которых есть и автор, и книга.

С помощью схемы опишем работу INNER JOIN в общем виде:

Схема работы INNER JOIN. Результат содержит только те пары, для которых выполнилось условие соединения — совпал цвет строк.

inner-join

Для каждой строки из первой таблицы INNER JOIN пытается найти строки из второй таблицы так, чтобы выполнилось условие соединения. Если во второй таблице будет несколько подходящих строк — в результат попадут все такие пары. Если в первой или во второй таблице есть строки, для которых не нашлась подходящая пара — они не попадут в результат.

Выводы

В этом уроке мы изучили как пользоваться INNER JOIN — инструментом для связывания строк из разных таблиц. Это соединение отбирает только такие пары строк, которые удовлетворяют специальному условию соединения.

Рекомендуемые программы