Иногда требуется получить, например, три последних заказа для каждого клиента. Обычные объединения не могут этого сделать. Приходится выполнять n+1 запросов в коде, что очень медленно!
Но с помощью lateral joins можно сделать циклическое соединение for-each в SQL
MySQL / PostgreSQL
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;
https://sqlfordevs.com/for-each-loop-lateral-join
Мы в MAX
#db
👉 @database_info
