![]() |
Выборка последних одинаковых данных
Есть таблица Recipients
id, id_mail, email, status (ИД, ИД письма, email, статус получения); 1, 1, '[email protected]', 'error'; 2, 1, '[email protected]', 'error'; 3, 2, '[email protected]', 'success'; 4, 2, '[email protected]', 'error'; 5, 3, '[email protected]', 'success'; 6, 3, '[email protected]', 'error'; 7, 4, '[email protected]', 'error'; 8, 4, '[email protected]', 'error'; Нужно выбрать пользователей, которые последние 3 раза не получили письмо, т.е. status='error' должно быть в 4, 3 и 2-й рассылке |
Re: Выборка последних одинаковых данных
SELECT * FROM Recipients WHERE status='error' AND id_mail>=2;
|
Re: Выборка последних одинаковых данных
Нет, я думаю должно быть как-то так:
SELECT * FROM Recipients WHERE id in (SELECT id FROM Recipients GROUP BY status WHERE COUNT(*) > 2 AND status='error') |
Re: Выборка последних одинаковых данных
Интересная задачка, но условия недоработаны...
По предложенным решениям, последняя наиболее ближе к правильному, но выбирает/группирует пользователей неверно. Еще не ясна ситуация когда пользователь не получил письмо 3 раза подряд или вообще минимум 3 не полученных? Если интересуют минимум 3 не доставленных сообщения (я предполагаю нужны просто почтовые адреса) Код:
|
| Текущее время: 01:10. Часовой пояс GMT +3. |
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2026, vBulletin Solutions, Inc. Перевод: zCarot
Copyright ©2004 - 2026 NoWa.cc