Ответ вслух Junior JOIN спрашивают часто обновлено

Виды JOIN

Вопрос

Расскажи, какие бывают JOIN и как каждый влияет на число строк в результате.

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

JOIN склеивает строки по условию в ON. INNER JOIN оставляет только пары, где условие истинно: клиенты без заказов и заказы без клиента пропадут.

Что должно прозвучать в ответе

  • INNER: только пары, где условие ON истинно

  • LEFT/RIGHT: все строки одной стороны, у недостающей стороны NULL

  • FULL: все строки обеих сторон

  • CROSS: декартово произведение, N × M строк

  • Связь один ко многим размножает строки «одной» стороны, два таких JOIN перемножают

  • Строки с NULL в ключе не соединяются: NULL = NULL не true

Что могут спросить следом

  • Как найти клиентов без заказов тремя способами?
  • Чем отличается условие в ON от условия в WHERE для LEFT JOIN?
  • Что такое self join?

Разбор

JOIN склеивает строки по условию в ON. INNER JOIN оставляет только пары, где условие истинно: клиенты без заказов и заказы без клиента пропадут. LEFT JOIN сохраняет все строки левой таблицы, если пары нет, правые колонки NULL; RIGHT зеркальный, его обычно переписывают в LEFT. FULL сохраняет всех с обеих сторон, полезен для сверки. CROSS даёт каждую строку с каждой, 100 на 100 это 10 тысяч строк. Важно помнить про размножение: если у клиента пять заказов, после JOIN он встретится пять раз, а если добавить ещё и отзывы, строки перемножатся, и суммы задвоятся. И строки с NULL в ключе не склеиваются никогда, потому что NULL = NULL не true.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме