Коротко
Урок объясняет, как работают соединения таблиц в SQL. INNER JOIN оставляет только пары с совпадением, LEFT JOIN сохраняет все строки левой таблицы, FULL JOIN — обеих. Основные ошибки — условие в WHERE вместо ON при LEFT JOIN и размножение строк из-за неуникального ключа.
Главное
- JOIN соединяет строки двух таблиц по условию в ON.
- INNER JOIN возвращает только строки, у которых нашлась пара.
- LEFT JOIN сохраняет все строки слева; где пары нет — NULL.
- Условие на правую таблицу в WHERE превращает LEFT JOIN во INNER.
- FULL JOIN сохраняет строки обеих таблиц.
- Неуникальный ключ справа размножает строки слева — проверяйте количество до и после.
- Антисоединение: LEFT JOIN … WHERE right.id IS NULL находит строки без пары.
Главы
- Зачем соединять таблицы
- INNER JOIN
- LEFT и RIGHT JOIN
- FULL JOIN
- Размножение строк
- Поиск строк без пары
Термины
- Ключ соединения
- Столбцы, по которым сравниваются строки в ON.
- LEFT JOIN
- Соединение, сохраняющее все строки левой таблицы.
- Антисоединение
- Выборка строк, у которых нет пары в другой таблице.
Выводы и действия
- Пишите условия на правую таблицу в ON, если нужен LEFT JOIN.
- Считайте строки до и после соединения.
- Для поиска «без пары» используйте LEFT JOIN + IS NULL или NOT EXISTS.
Проверьте себя
Вопросы к видео
Как найти клиентов без заказов?
LEFT JOIN заказов к клиентам и условие WHERE orders.id IS NULL . Аналог — NOT EXISTS.
Почему LEFT JOIN потерял строки?
Скорее всего, условие на правую таблицу стоит в WHERE — перенесите его в ON .