Требуется помощь по запросам MySQL, чтобы получить клиентов, которые ничего не покупали более 180 дней!

0

У меня есть таблица 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

  • 0
    В чем твоя проблема ? Функции Join или Datetime?
  • 0
    Запрос возвращает информацию о клиентах, у которых есть заказы с покупками позже
Теги:

4 ответа

0
SELECT OrdersName,OrdersSurname,OrdersEmail,OrdersPhone from Orders
WHERE TO_DAYS(NOW()) - TO_DAYS(OrdersFinishedTime) > 180
ORDER BY OrdersFinishedTime DESC
LIMIT 1;

Последний заказ, который более 180 дней назад.

0

SELECT * FROM Orders WHERE OrdersFinishedTime < DATE_SUB (NOW(), INTERVAL 180 DAY)

0

Возможно, что-то вроде следующего выполнит трюк.:

SELECT DISTINCT OrdersName,OrdersSurname,OrdersEmail,OrdersPhone FROM Orders
   WHERE OrdersID IN 
       (SELECT OrdersID FROM Orders 
        WHERE OrdersFinishedTime < (NOW() - INTERVAL 180 DAY))
  • 0
    это возвращает все заказы с датой окончания более 180 дней назад ... Мне нужен только последний заказ, который более 180 дней назад
  • 0
    теперь пересмотрен, чтобы вытащить только последнего клиента на основе даты заказа
0

попробуйте следующее:

SELECT `OrdersName`, `OrdersSurname`, `OrdersEmail`, `OrdersPhone` FROM `Orders ` WHERE `OrdersFinishedTime` < SUBDATE(NOW(), 180);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню