Совет по работе с базой данных

GuDron

dumpz.ws
Admin
Регистрация
28 Янв 2020
Сообщения
10,187
Реакции
1,578
Credits
36,799
Совет по работе с базой данных
Иногда требуется получить, например, три последних заказа для каждого клиента. Обычные объединения не могут этого сделать. Приходится выполнять n+1 запросов в коде, что очень медленно!

Но с помощью lateral joins можно сделать циклическое соединение for-each в SQL
MySQL / PostgreSQL
SQL:
SELECT customers.*, recent_sales.*
FROM customers
LEFT JOIN LATERAL (
    SELECT *
    FROM sales
    WHERE sales.customer_id = customers.customer_id
    ORDER BY created_at DESC
    LIMIT 3
) AS recent_sales ON true;
Скрытое содержимое могут видеть только пользователи групп(ы): Premium, Местный, Свои