2016-03-11 6 views
0

Я понял, что мое первое объяснение было немного от меня, поэтому я вспомнил свои мысли и перефразировал свой первый вопрос. Я хотел бы поблагодарить @Jitendra Sanghani и @StanislavL за предоставление первых ответов.MySQL: Получить последние 2 заказов пользователей с условиями

Возможно ли в MySQL получить последние 2 заказа пользователей, если их последний заказ был сделан ими в марте 2016 года, а второй - последним был сделан в декабре 2015 года (или любой другой более ранней даты)? Это означает, что если они сделали заказ сейчас, но их предыдущий был в январе 2016 года, то они не будут считаться (поскольку мы смотрим на декабрь 2015 года).

В настоящее время у меня есть образец orders стол с полями id, fullname, и created.

+0

показать нам свою структуру таблицы – ughai

ответ

1

вы можете написать два запроса, а затем внутреннее соединение на обоих как

выбрать. * От заказов, где OrderDate> <> как внутреннее соединение (выберите b.orderdate от заказов, где OrderDate < < =>)

в вас случае запрос будет

select a.* from orders where a.orderdate >= '2016-03-01' as a 
inner join 
(select b.orderdate from orders where orderdate <= '2015-12-31') as b 
ON a. orderid = b.orderid 

Я думаю, что это должно решить вашу проблему.

+0

Была ошибка, но я получил его на работу после того, как переписать его, но он не показывает значения, которые я хотел. Здесь я разместил его сверху. – enchance

+0

предложит вам добавить столбец userid вместо полного имени и затем присоединиться к команде userid col. –

0
select o.id, 
     sum(when case o.created>'2016-03-01' then 1 else 0 end) as current_count, 
     sum(when case o.created<='2016-03-01' then 1 else 0 end) as prev_count 
from orders o 
group by o.id 
having current_count>0 and prev_count>0 

исправлен

+0

Вы имеете в виду: 'ВЫБРАТЬ o.id, \t SUM (CASE WHEN DATE_FORMAT (o.created, '% Y-% м') = '2016-03' THEN 1 ELSE 0 END) CURRENT_COUNT, \t СУММА (случай, когда DATE_FORMAT (o.created, '% Y-% м') = '2015-12' ТОГДА 1 0 КОНЕЦ ИНАЧЕ) prev_count \t ОТ sl_orders о \t GROUP BY o.id \t HAVING CURRENT_COUNT> 0 AND prev_count> 0' Но, похоже, он работает неправильно. – enchance

+0

есть. Я отправил, прежде чем вы отправили свой запрос, а затем исправили **, созданный **. Фактически мы получаем 2 счета - количество заказов в этом месяце и количество заказов до этого месяца. Если оба> 0, мы получили пользователя – StanislavL

Смежные вопросы