У меня есть таблица Orders, в которой хранится информация о заказах (включая OrdersName, OrdersSurname, OrdersEmail, OrdersPhone), которая является информацией, которую мне нужно получить.
Он содержит поле OrdersFinishedTime, которое является полем DateTime, которое хранит данные при завершении заказа.
Что мне нужно сделать, это выбрать OrdersName, OrdersSurname, OrdersEmail, OrdersPhone из таблицы Orders для пользователей, которые ничего не купили за более чем 180 дней.
То есть - мне нужно найти уникальных пользователей, которые ПОСЛЕДНИЕ УНИКАЛЬНЫЕ покупки были более 180 дней назад.
Спасибо заранее!
EDIT:
Я знаю, как найти весь порядок записей, чем 180 дней, но мне нужны записи, которые на 180 дней старше, и с этой даты больше заказов (для этого конкретного пользователя)!
EDIT2: вы, вероятно, не читаете вопрос. Мне нужно найти уникальных пользователей, которые ничего не купили за более чем 180 дней. Мне не нужны заказы старше 180 дней, мне нужна информация о пользователе, которая хранится в заказах.
мой текущий SQL-запрос выглядит следующим образом:
SELECT DISTINCT O. OrdersEmail
, O. OrdersName
, O. OrdersSurname
, O. OrdersPhone
, O. OrdersFinishedTime
FROM (SELECT OrdersPhone
, MAX (OrdersFinishedTime
) AS OrdersFinishedTime
FROM Orders
ГДЕ ГОД (OrdersFinishedTime
) >= 2010 ГРУППА BY OrdersPhone
ИМЕЕТ ДЕЙСТВИЕ (СЕЙЧАС(), МАКС. (OrdersFinishedTime
)) >= 180) AS LastOrders
INNER JOIN Orders
AS O USING (OrdersPhone
, OrdersFinishedTime
) ORDER BY OrdersFinishedTime
DESC
SELECT OrdersName,OrdersSurname,OrdersEmail,OrdersPhone from Orders
WHERE TO_DAYS(NOW()) - TO_DAYS(OrdersFinishedTime) > 180
ORDER BY OrdersFinishedTime DESC
LIMIT 1;
Последний заказ, который более 180 дней назад.
SELECT * FROM Orders WHERE OrdersFinishedTime < DATE_SUB (NOW(), INTERVAL 180 DAY)
Возможно, что-то вроде следующего выполнит трюк.:
SELECT DISTINCT OrdersName,OrdersSurname,OrdersEmail,OrdersPhone FROM Orders
WHERE OrdersID IN
(SELECT OrdersID FROM Orders
WHERE OrdersFinishedTime < (NOW() - INTERVAL 180 DAY))
попробуйте следующее:
SELECT `OrdersName`, `OrdersSurname`, `OrdersEmail`, `OrdersPhone` FROM `Orders ` WHERE `OrdersFinishedTime` < SUBDATE(NOW(), 180);