Как сделать выборку людей старше месяца
Есть система списание средств по подписке. Схема конечно тупая, но не я её делал. Есть история операций, в которой есть время покупки подписки. Мне нужно выбрать пользователей, которые купили подписку месяц назад, и создать новую операцию "Снятие за подписку". Вот так я выбираю пользователей:
"SELECT * FROM history WHERE type = 'payment' AND date <= (NOW() - INTERVAL 1 MONTH)
Но есть одна проблема как мне исключить пользователей у которых оплата за подписку уже была. То есть выбирать все строки у которых нет операций раньше месяца. Для сортировки есть только поле date и uid - id пользователя.
Ответы (2 шт):
Автор решения: DmitryD
→ Ссылка
Если я все правильно понял, то:
SELECT * FROM history WHERE type = 'payment'
AND date <= (select max(date) from history where type = 'payment')
Автор решения: makcim512
→ Ссылка
Сам разрулил
SELECT * FROM `history` as h1 WHERE `type` = 'payment'
AND (SELECT MAX(date)
FROM `history` as h2
WHERE `type` = 'payment'
AND h1.uid = h2.uid) <= (NOW() - INTERVAL 1 MONTH)