Компьютерный форум NoWa.cc

Компьютерный форум NoWa.cc (https://nowa.cc/index.php)
-   Базы данных (https://nowa.cc/forumdisplay.php?f=312)
-   -   Выборка последних одинаковых данных (https://nowa.cc/showthread.php?t=394535)

Мешок 22.05.2013 01:21

Выборка последних одинаковых данных
 
Есть таблица 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-й рассылке

zss 22.05.2013 19:18

Re: Выборка последних одинаковых данных
 
SELECT * FROM Recipients WHERE status='error' AND id_mail>=2;

lSeverl 30.05.2013 13:31

Re: Выборка последних одинаковых данных
 
Нет, я думаю должно быть как-то так:
SELECT * FROM Recipients WHERE id in (SELECT id FROM Recipients GROUP BY status WHERE COUNT(*) > 2 AND status='error')

tetex 21.07.2013 15:19

Re: Выборка последних одинаковых данных
 
Интересная задачка, но условия недоработаны...

По предложенным решениям, последняя наиболее ближе к правильному, но выбирает/группирует пользователей неверно.

Еще не ясна ситуация когда пользователь не получил письмо 3 раза подряд или вообще минимум 3 не полученных?
Если интересуют минимум 3 не доставленных сообщения (я предполагаю нужны просто почтовые адреса)

Код:


SELECT email, COUNT( * ) AS miss
FROM recipients
WHERE STATUS =  'error'
GROUP BY email
HAVING miss >2



Текущее время: 01:10. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2026, vBulletin Solutions, Inc. Перевод: zCarot
Copyright ©2004 - 2026 NoWa.cc

Время генерации страницы 0.02194 секунды с 9 запросами