Разница на практике
- INNER JOIN — только заказы, у которых нашёлся клиент
- LEFT JOIN — все заказы, даже если клиент удалён
- FULL JOIN — и заказы без клиента, и клиенты без заказов
Типичная ошибка
Условие на правую таблицу в WHERE после LEFT JOIN превращает его в INNER: строки с NULL отфильтруются. Такое условие нужно переносить в ON.
SQL Example
select o.id, c.name
from orders o
left join clients c
on c.id = o.client_id and c.is_active
-- а не where c.is_activeПрактические задания
Проверьте себя: сформулируйте ответ вслух или выполните задание до того, как откроете подсказку.
Найти потерянные строки
В отчёте по выручке за месяц сумма меньше, чем в бухгалтерии. В запросе есть INNER JOIN со справочником товаров.
Опишите, как проверить гипотезу о потерянных строках и каким запросом её подтвердить.
Показать подсказку
Сравните количество строк до и после соединения и найдите заказы с товарами, которых нет в справочнике.