← Все статьи
Связи таблицСредний8 минут чтения

JOIN без путаницы: как связывать таблицы

Понятная схема соединений: выбираем основную таблицу, находим общий ключ и контролируем строки, которые попали в результат.

Опубликовано 11 августа 2026

01

Зачем нужны соединения

В нормальной базе связанные данные хранятся отдельно. Например, имя члена экипажа находится в crew_members, а записи о доступе — в access_logs. JOIN собирает их в один результат по общему ключу.

SELECT cm.full_name, al.access_time, al.access_result
FROM access_logs AS al
JOIN crew_members AS cm
  ON cm.badge_id = al.badge_id;
02

Как выбрать тип JOIN

  • INNER JOIN оставляет строки, для которых связь найдена с обеих сторон.
  • LEFT JOIN сохраняет все строки левой таблицы, даже если пары нет.
  • RIGHT JOIN делает то же для правой таблицы и обычно заменяется более понятным LEFT JOIN.
  • FULL JOIN сохраняет строки обеих таблиц, включая записи без пары.
03

Соединение нескольких таблиц

Добавляй таблицы по одной и сразу проверяй условие ON. Это помогает не получить случайное умножение строк.

SELECT s.sector_code, ss.system_name, se.event_type
FROM system_events AS se
JOIN ship_systems AS ss
  ON ss.system_id = se.system_id
JOIN sectors AS s
  ON s.sector_id = se.sector_id;
04

Частые ошибки

  • Связь указана не по идентификаторам, а по похожим названиям.
  • В запросе есть одинаковые имена столбцов без псевдонимов таблиц.
  • Условие правой таблицы помещено в WHERE и случайно превратило LEFT JOIN в обычный JOIN.
  • После каждого нового соединения не проверено число строк.