Задавайте вопросы, мы ответим
Вы не зашли.
есть 2 таблицы
time
id, loginid, timestamp
login
id, name
нужно выбрать в результате такие поля
login.id, login.name, days_in_a_row,
где days_in_a_row это сколько дней подряд такойто loginid появляется в таблице time. Допустим он заходил
Пн
Вт
Чт
Пт
Вс
Вт
Подряд считаем только Пн-Вт + Чт-Пт = 4 дня подряд.
Неактивен
Сходу приходит в голову только курсором. Возможно, через IF можно как-то написать.
Попробуйте поиграть с более простой табличкой:
mysql> select * from z order by a; +------+ | a | +------+ | 1 | | 2 | | 4 | | 5 | | 7 | | 9 | +------+ 6 rows in set (0.00 sec)
С ней можно, например, получить разницу с предыдущим значением вот так:
mysql> SELECT @c := a FROM z ORDER BY a LIMIT 1; SELECT a, a - @c AS diff, @c := a FROM z ORDER BY a; +---------+ | @c := a | +---------+ | 1 | +---------+ 1 row in set (0.00 sec) +------+------+---------+ | a | diff | @c := a | +------+------+---------+ | 1 | 0 | 1 | | 2 | 1 | 2 | | 4 | 2 | 4 | | 5 | 1 | 5 | | 7 | 2 | 7 | | 9 | 2 | 9 | +------+------+---------+ 6 rows in set (0.00 sec)
Собственно, Вас интересуют строки с diff=1, но только тупо просуммировать —
неправильно (потому что у Вас отличается случай двух единиц подряд и двух
единиц через двойку). Нужно, видимо, эту штуку брать еще раз в подзапрос
и считать количество единичек подряд.
Неактивен