Перейти к содержанию
notesavo

Пример · текст лекции синтетический

SQL JOIN без путаницы

Демо-урок, курс «SQL для аналитиков», урок 5 · 12:24

Коротко

Урок объясняет, как работают соединения таблиц в 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 находит строки без пары.

Главы

  1. Зачем соединять таблицы
  2. INNER JOIN
  3. LEFT и RIGHT JOIN
  4. FULL JOIN
  5. Размножение строк
  6. Поиск строк без пары

Термины

Ключ соединения
Столбцы, по которым сравниваются строки в ON.
LEFT JOIN
Соединение, сохраняющее все строки левой таблицы.
Антисоединение
Выборка строк, у которых нет пары в другой таблице.

Выводы и действия

  • Пишите условия на правую таблицу в ON, если нужен LEFT JOIN.
  • Считайте строки до и после соединения.
  • Для поиска «без пары» используйте LEFT JOIN + IS NULL или NOT EXISTS.

Проверьте себя

  1. Что вернёт INNER JOIN для строки без пары?
  2. Что произойдёт с LEFT JOIN, если добавить WHERE orders.status = 'paid'?
  3. Почему после JOIN строк стало больше, чем в левой таблице?

Вопросы к видео

Как найти клиентов без заказов?

LEFT JOIN заказов к клиентам и условие WHERE orders.id IS NULL . Аналог — NOT EXISTS.

Почему LEFT JOIN потерял строки?

Скорее всего, условие на правую таблицу стоит в WHERE — перенесите его в ON .

Такой конспект — для любой вашей лекции, вебинара или ролика.