INNER JOIN
119 мин
JOIN соединяет две таблицы по ключам. Это одна из самых мощных и самых используемых возможностей SQL.
Шаблон
SELECT …
FROM таблица_a
JOIN таблица_b ON таблица_a.ключ = таблица_b.ключ;После ON — условие, какие строки подходят друг другу. Обычно это «внешний ключ = первичный ключ».
Первый JOIN
Название группы рядом с названием факультета:
Столбец name есть в обеих таблицах, поэтому обязательно указываем, чей он: study_groups.name.
Псевдонимы — короче запись
study_groups g — даём таблице короткое имя g. В запросах с несколькими таблицами это очень удобно.
JOIN + WHERE + GROUP BY
После JOIN всё работает как обычно: фильтр, группировка, сортировка.
Что будет, если забыть ON?
Без условия каждая строка соединится с каждой строкой второй таблицы. 32 группы × 6 факультетов = 192 бессмысленные строки. Это называется декартово произведение, и на больших таблицах оно может «повесить» базу. Получилось подозрительно много строк — первым делом проверьте ON.
Что такое INNER JOIN на самом деле?
JOIN = INNER JOIN. Он возвращает только строки, у которых есть пара в обеих таблицах. Например, группа без куратора при соединении с teachers в результат не попадёт. Нужны и строки без пары — нужен LEFT JOIN (следующий урок).
Выведите first_name каждого студента и название его группы (study_groups.name).
Выведите название каждого товара и название его категории (products.name, categories.name).
Сколько товаров в каждой категории? Название категории и количество.
Запомните
JOIN … ON a.fk = b.idсоединяет две таблицы по ключу.- Для одноимённых столбцов указывайте имя таблицы или псевдоним.
- Слишком много строк — не хватает условия
ON.