SQL: Join
Теория: Соединение трех и более таблиц
В предыдущих уроках мы рассматривали примеры, в которых соединялись только две таблицы. В этом уроке мы научимся соединять три и более таблицы в одном запросе.
Соединяем три таблицы
Представим, что мы разрабатываем сервис для заказа такси. В базе данных хранится информация о водителях, пассажирах и поездках:
Таблица-справочник drivers хранит информацию о водителях:
drivers
Таблица-справочник passengers хранит информацию о пассажирах:
passengers
Таблица-связка rides хранит информацию о поездках:
rides
Допустим, нам нужно получить информацию о поездках в удобном виде: с именами водителя, пассажира и стоимостью поездки. Эту задачу мы можем решить, если выполним соединение трех таблиц:
Чтобы выполнить соединение с третьей таблицей, мы добавили в запрос еще одну секцию INNER JOIN ... ON .... Добавляя секции, мы можем соединить произвольное число таблиц.
Результат выполнения запроса:
Соединение трех таблиц
Здесь мы сначала соединили первые две таблицы: rides INNER JOIN drivers = rides_and_drivers. Затем результат соединили с третьей таблицей: rides_and_drivers INNER JOIN passengers.
На практике СУБД может поменять порядок соединения таблиц в целях оптимизации, но результат будет содержать те же строки.
Выводы
В этом уроке мы научились соединять несколько таблиц. Каждая новая таблица в соединении описывается отдельной секцией INNER JOIN ... ON ... в SQL-запросе. Логически можно представить, что каждая новая таблица соединяется с результатом предыдущего соединения.
.png)














