← Все статьи
Связи таблицСредний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. - После каждого нового соединения не проверено число строк.