← К оглавлению занятия

Занятие 24. Summary session 6

📁 Блок: SQL / MySQL / Связи и JOIN ⏱️ Время изучения: ~60 мин 🎯 Сложность: Повторение
#join #where #null #select #union

⚡ Кратко: типичные ошибки

  • Путаница 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. Учитывайте это при фильтрации и агрегации.