Я использую PHP и MySQL. У меня есть две таблицы, одна для клиентов и одна для продажи. Моя цель состоит в том, чтобы составить список из 5 клиентов, у которых в прошлом году было более трех регулярных записей о продаже, но за последние три месяца были зарегистрированы нулевые продажи любого типа (в основном постоянные клиенты, которые недавно прекратили покупать). В то же время я хотел бы получить дату последней продажи для каждого из этих клиентов, а также заказать список клиентов по дате их последней продажи в нисходящем направлении. Это также должно ограничить результаты для 5 клиентов.
Итак, для простоты скажем, что таблица "customer" выглядит так:
ID, CUSTOMER_NAME
и таблица 'sale_entry' выглядит так:
ID, Пользовательский ИД, Дата ввода, sale_type (может быть 0 = правильный, 1 = пятно, 2 = контракт)
Поле customer_id в таблице sale_entry, конечно, относится к полю id в таблице клиентов. Любые идеи о том, как наилучшим образом восстановить желаемые данные, приветствуются.
Выполнено с несколькими подзапросами.
$query = 'SELECT DISTINCT'
.' customers.id'
.', customers.customer_name'
.', (SELECT MAX(x.entry_date) FROM sale_entry AS x WHERE x.customer_id = customers.id) AS last_purchase_date'
.' FROM customers'
.' WHERE (SELECT COUNT(x.id) FROM sale_entry AS x WHERE x.customer_id = customers.id AND x.type = 0 AND x.entry_date >= \''.date('Y-m-d', strtotime('-1 year')).'\') > 0'
.' AND (SELECT COUNT(x.id) FROM sale_entry AS x WHERE x.customer_id = customers.id AND x.entry_date >= \''.date('Y-m-d', strtotime('-3 months')).'\') = 0'
.' ORDER BY last_purchase_date DESC'
.' LIMIT 5';