2016-08-16 2 views
0
table_customers(customer_id, customer_name) 
table_orders(customer_id, order_id, order_datetime) 

Я хочу, чтобы получить last order date для каждого customer. Если клиент не разместил для нее никакого заказа 00-00-0000.Как выбрать дату последнего заказа для каждого клиента в MySQL

Это мой запрос.

select C.customer_id , date(O.order_datetime) 
from table_customers C 
INNER JOIN table_orders O ON C.customer_id = O.customer_id 
group by O.customer_id order by O.order_datetime desc limit 1; 

Он возвращает дату последнего заказа только для последнего клиента.

Как получить последнюю дату заказа для всех клиентов?

+0

Удалить «ограничение 1»? – David

ответ

2

Привет проверка My SQL ниже ..

select coalesce(max(o.order_datetime), '0000-00-00 00:00:00') as last_order_date, c.customer_id 
from table_orders as o 
right join table_customers as c on o.customer_id = c.customer_id 
group by c.customer_id 
order by c.customer_id; 

Это может помочь вам.

Результаты приведены ниже.

enter image description here

+0

Спасибо Avishek. Это сработало для меня. –

+0

это мое удовольствие ..: D – Avishek

+0

У меня есть еще один запрос, на аналогичной строке. Я разместил на http://stackoverflow.com/questions/38982167/how-to-select-customers-final-balance-for-all-customer-in-mysql. Пожалуйста, проверьте, можете ли вы помочь мне в этом? –

0

Вы можете сделать, как показано ниже

SELECT customer_table.*, orders.order_date FROM customer_table left join (SELECT customer_id, order_date FROM (SELECT tmp.* from order_table ORDER BY order_date DESC) as tmp GROUP BY tmp.customer_id) as orders on orders.customer_id= customer_table.id where order.order_date NOT NULL 
Смежные вопросы