JOIN в SQL простыми словами
Представьте две таблицы: в одной список клиентов, в другой список заказов. В заказе записан номер клиента, который его сделал. JOIN просто склеивает строки из двух таблиц по такому общему значению: «к каждому заказу подставь данные клиента» или «к каждому клиенту подставь его заказы».
Разница между видами JOIN только в том, что делать со строками, у которых нет пары. INNER JOIN оставляет только тех, у кого пара нашлась: клиенты без заказов в результат не попадут. LEFT JOIN сохраняет все строки из левой таблицы, а там, где пары нет, подставляет пустое значение (NULL). Чтобы выбрать нужный вариант, задайте себе вопрос: «Кого я не хочу потерять в результате?»
SELECT c.name, o.total
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id;
Этот запрос покажет всех клиентов, даже тех, кто ничего не заказывал: у них в столбце total будет NULL. Самая частая ошибка новичков — забыть условие ON. Тогда каждая строка одной таблицы склеивается с каждой строкой другой, и результат разрастается до тысяч лишних строк.
Не получается разобраться с вашим запросом? Напишите мне, разберём на вашем примере.