mysql / php не уверен, как построить конкретный запрос - PullRequest
0 голосов
/ 03 декабря 2010

Я использую PHP и MySQL. У меня есть две таблицы, одна для клиентов и одна для записей о продаже. Моя цель состоит в том, чтобы составить список из 5 клиентов, у которых в прошлом году было более трех записей о регулярных продажах, но в течение последних трех месяцев не было записей о продажах любого типа (в основном постоянных клиентов, которые недавно прекратили покупать). В то же время я хотел бы получить дату последней записи о продаже для каждого из этих клиентов, а также упорядочить список клиентов по их последней дате продажи в нисходящем направлении. Это также должно ограничить результаты до 5 клиентов.

Итак, для простоты, скажем, что таблица 'customer' выглядит следующим образом

идентификатор, customer_name

и таблица 'sale_entry' выглядит следующим образом

идентификатор, Пользовательский ИД, Дата поступления, тип_продажи (может быть 0 = обычный, 1 = спот, 2 = контракт)

Поле customer_id в таблице sale_entry, разумеется, относится к полю id в таблице customer. Любые идеи о том, как лучше получить нужные данные, приветствуются.

1 Ответ

0 голосов
/ 03 декабря 2010

Выполнено с несколькими подзапросами.

$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';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...