Совет по работе с базой данных
Иногда требуется получить, например, три последних заказа для каждого клиента. Обычные объединения не могут этого сделать. Приходится выполнять n+1 запросов в коде, что очень медленно!
Но с помощью lateral joins можно сделать циклическое соединение for-each в SQL
MySQL / PostgreSQL
Иногда требуется получить, например, три последних заказа для каждого клиента. Обычные объединения не могут этого сделать. Приходится выполнять 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, Местный, Свои