Я пытаюсь написать запрос на MySQL, который показывает, когда клиент последний раз заказывал с сайта моего клиента.Я использую две таблицы для этой цели.Один из них называется «заказы», который обновляется со временем заказа при каждом размещении нового заказа и присваивает уникальный идентификатор каждому новому заказу.Другая таблица называется "orders_customers_details", которая также обновляется всякий раз, когда размещается новый заказ, и содержит уникальный идентификатор (на основе комбинации адреса электронной почты и номера телефона) клиента, разместившего заказ, а также ключ, которыйсоответствует идентификатору таблицы заказов.
Моя проблема в том, что используемый мной запрос не возвращает последний заказ каждого клиента.В случае некоторых клиентов мне дают дату их четвертого или пятого последнего заказа.
Мне осталось присоединиться к заказам на orders_customer_details:
left join orders o
on ocd.id = o.customer_details_id
У меня естьтакже попытался использовать левое внешнее соединение и следующее соединение:
from orders o, orders_customers_details ocd
where o.customer_details_id = ocd.id
Чтобы получить только самый последний заказ, я группирую по customer_id HAVING max (order.id).К вашему сведению, order.id увеличивается с размещением каждого нового ордера, поэтому ордер с самым высоким идентификатором является самым последним ордером.
Я также попытался
SELECT customer_id, MAX(order.id)
, а затем сгруппировалby customer_id, но безрезультатно.
Вот весь код:
select customer_id, o.id as id_of_last_order, date(order_date) as
last_ordered, timestampdiff(day, order_date, now()) as
days_since_last_ordered
from orders o, orders_customers_details ocd
where o.customer_details_id = ocd.id
group by customer_id having max(o.id)
order by customer_id;