Задача на 15 минут
Есть две таблицы: orders (заказы) и customers (клиенты). Нужно получить список заказов с именем клиента. Всё, что между этим «нужно» и работающим запросом — четыре вида соединений.
INNER JOIN: совпадения с обеих сторон
Вернёт только заказы, у которых нашёлся клиент. Заказы с удалёнными клиентами исчезнут — часто это и есть первый баг отчёта.
LEFT JOIN: всё слева + совпадения справа
Вернёт все заказы, а там, где клиента нет, подставит NULL. Правило: если «пустые» строки важны — это всегда LEFT JOIN.
Как проверять себя
посчитайте количество строк до и после соединения;
проверьте, не размножились ли строки (клиент с двумя заказами × две таблицы);
если строк стало больше, чем в левой таблице, — где-то соединение «один ко многим».
RIGHT и FULL JOIN встречаются реже: RIGHT читается «наизнанку» и путает, а FULL обычно означает, что стоит перепроверить задачу.