MySQL запрос для генерации списка пользователей, у которых есть хотя бы один заказ, но нет заказа в этом месяце до настоящего времени - PullRequest
0 голосов
/ 04 февраля 2019

У меня две таблицы user и order.где внешний ключ в таблице заказов - user_id.Мне нужен список пользователей, у которых есть хотя бы один заказ, но которые не заказывали в этом месяце до сих пор.

Ответы [ 3 ]

0 голосов
/ 04 февраля 2019

Просто используйте агрегацию:

select o.user_id
from orders o
group by o.user_id
having count(*) >= 2 and  -- at least two orders
       max(order_date) < curdate() + (1 - day(curdate())) day;

Выражение curdate() + (1 - day(curdate())) day - это удобный способ получить первую дату месяца.

0 голосов
/ 04 февраля 2019

Получить пользователей, чей последний заказ был до текущего месяца:

select u.user_id, u.username 
from user u
inner join order o 
on on.user_id = u.user_id
group by u.id, u.username
having max(o.OrderDate) < DATE_FORMAT(NOW() ,'%Y-%m-01') 
0 голосов
/ 04 февраля 2019

Попробуйте это:

select * from users
where exists 
(
   select 1 from order
   where users.user_id = order.user_id 
   having count(*) > 1
) and not exists 
(
   select 1 from order 
   where DATE_FORMAT(order_Date, %Y%m) = DATE_FORMAT(NOW() ,'%Y%m')
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...