WITH t1 AS (
    SELECT 
        customer_id,
        MAX(order_date) latest_order_date
    FROM orders
    GROUP BY customer_id
 )

 SELECT 
    o.customer_id,
    c.customer_name,
    p.product_name latest_order
FROM orders o
JOIN t1 ON t1.customer_id = o.customer_id AND t1.latest_order_date = o.order_date
JOIN customers c ON o.customer_id = c.customer_id
JOIN products p ON p.product_id = o.product_id
ORDER BY o.customer_id