Mysql查询,选择最后一个订单

时间:2013-10-15 20:10:42

标签: mysql zen-cart

我正在尝试选择所有客户购买的最后一个订单,真正的目的是添加特定范围,例如最近3个月,并考虑过去3个月内任何客户的最后订单,但没有订单比这3个月还早,到目前为止,我有这个:

SELECT zen_orders.orders_id, zen_customers.customers_id,
    zen_orders.date_purchased,  zen_orders.orders_status
FROM  zen_orders 
INNER JOIN zen_customers
ON zen_orders.customers_id = zen_customers.customers_id
    AND zen_orders.orders_status = '3'
ORDER BY zen_customers.customers_id

我是mysql的新手,现在这回复了​​我所有客户的所有订单,当一个客户端多了一个订单时,它重复了几行不同的订单ID但是客户ID相同,但现在我如何隔离只是订单所有客户的最后一个订单,以便我可以在一个范围内适应它?

2 个答案:

答案 0 :(得分:0)

select o.orders_id,o.customers_id,
    o.date_purchased,  o.orders_status from
(
    select max(o.orders_id) maxOrder,o.customer_id
    FROM  zen_orders o
    where o.orders_status = '3'
    group by o.customers_id
) t
inner join zen_orders o on o.orders_id = t.maxOrder

答案 1 :(得分:0)

显示超过30天且不超过60天的客户信息和订单信息。

 SELECT C.customers_id, C.customers_firstname, C.customers_lastname,  
    O.date_purchased, O.orders_id, O.order_total, OS.orders_status_name
        FROM  orders O
        LEFT join customers C on C.customers_id = O.customers_id
        LEFT join orders_status OS on OS.orders_status_id=O.orders_status
        WHERE 
           O.date_purchased BETWEEN DATE_SUB(NOW(), INTERVAL 2 MONTH) AND DATE_SUB(NOW(), INTERVAL 1 MONTH)
 GROUP BY C.customers_id