Занятие 24. Summary session 6
⚡ Кратко: типичные ошибки
- Путаница INNER / LEFT JOIN.
- UNION без ALL там, где нужно сохранить источник.
- Фильтр на правую таблицу в WHERE при LEFT JOIN.
🐛 Типичные ошибки блока
Ошибка 1. INNER JOIN вместо LEFT JOIN
Если задача требует сохранить все строки основной таблицы, INNER JOIN отбросит строки без связи.
Исправление: используйте LEFT JOIN.
Ошибка 2. UNION вместо UNION ALL без источника
UNION удаляет дубликаты. Если нужно понять, из какой таблицы пришла строка, добавьте столбец-источник и используйте UNION ALL.
Ошибка 3. Фильтр на правую таблицу в WHERE
-- Неправильно: превращает LEFT JOIN в INNER JOIN
SELECT *
FROM orders AS o
LEFT JOIN customers AS c ON o.customer_id = c.id
WHERE c.company_name = 'Foo';
Исправление: условие на правую таблицу переносите в ON, если нужно сохранить все строки левой таблицы.
Ошибка 4. Забыть про NULL
Внешние ключи и результаты LEFT JOIN могут содержать NULL. Учитывайте это при фильтрации и агрегации.