Joins
Когда данных из одной таблицы недостаточно
В реляционной базе связанные данные обычно хранятся в разных таблицах: пользователь — отдельно, его заказы — отдельно, товары заказа — ещё в одной таблице. JOIN позволяет собрать такие части в один результат, используя связь между строками.
Главный вопрос при любом соединении — какие строки должны считаться связанными и что делать со строками, для которых пара не нашлась. Разные виды JOIN как раз отвечают на эту вторую часть по-разному.
Что будет внутри раздела
- Основы JOIN. Разберём сам принцип соединения таблиц и условие
ON. - INNER JOIN. Оставим только строки, для которых есть совпадение с обеих сторон.
- LEFT JOIN. Сохраним все строки левой таблицы, даже если связанной строки справа нет.
- RIGHT JOIN. Посмотрим на симметричный вариант с сохранением всех строк правой таблицы.
- FULL JOIN. Объединим совпавшие строки и сохраним несовпавшие строки обеих таблиц.
- CROSS JOIN. Разберём декартово произведение — все возможные комбинации строк двух наборов.
- SELF JOIN. Научимся соединять таблицу саму с собой через разные псевдонимы.
- Несколько JOIN. Соберём данные сразу из трёх и более таблиц, последовательно добавляя связи.
Сначала важно научиться буквально читать каждое соединение: какая таблица находится слева, какая справа, по какому условию строки сопоставляются и какие строки должны пережить отсутствие пары.