Навернутый запрос (MySQL)

DeadMorozBLR

Новичок
Навернутый запрос (MySQL)

Знаю, что решение - стандартное, и оттого не хочется придумывать самому:

При открытии каждой страницы на сайте в таблицу MySQL добавляется запись об id пользователя и времени открытия страницы (timestamp).

Задача - в том, чтобы определить количество заходов пользователя на сайт за определенный период времени, т.е. определить количество групп записей, промежуток времени между которыми больше заданного (скажем 1 час).

Например, записи в таблице - следующие:
12:00
12:00
12:01
12:03
15:20
15:25
20:07 (в формате unix-timestamp)

результат должен быть равен 3

Конечно, есть более простой вариант - создать отдельную таблицу для логинов и добавлять туда записи именно в момент авторизации, но это лишние данные и т.п. Хотелось бы устаканить проблему более изящно.
 

TuBu

Guest
[sql]

select t1.date, count(*) as c from `table` t1 left join `table` t2 on t2.date between t1.date and t1.date + interval 1 hour group by t1.date having c = 1;

select found_rows() as c;

[/sql]
 

Screjet

Новичок
Твой вариант неплох, но
Задача - в том, чтобы определить количество заходов пользователя на сайт за определенный период времени
Решение очень избыточное. Т.е. собираешь хиты, а в задаче их нет.

Я бы сделал по крону типа:
Юзер зашел куда либо,
Отыскиваем открытую запись юзера, обновляем типа last_Stamp.
Если такая запись отсутствует, то создаем новую, отмечая enter_Stamp.
По крону проверяем устарелые записи и закрываем их, отмечая close_Stamp, например.

В итоге получаешь красивый лог работы юзера.
 

Фанат

oncle terrible
Команда форума
Screjet
с каких это пор логи заходов на сайт стали избыточными?
Если тебе ума не хватает с логами работать, то не надо советовать глупости другим
 

DeadMorozBLR

Новичок
всё правильно, хиты - не избыточные, они тоже используются в создании статистики, и на основании этих данных я хочу получить показатель количества заходов.

Только что за таблица t2?
 

Фанат

oncle terrible
Команда форума
DeadMorozBLR
Это та же самая таблица, просто с другим именем и другой выборкой
 

TuBu

Guest
Таблица джойнит саму себя, поэтому чтобы мы могли к ней обращаться, мы обзываем ее t2
 

Screjet

Новичок
Originally posted by Фанат
Screjet
с каких это пор логи заходов на сайт стали избыточными?
С тех пор, как ты зашел на этот форум. Твоя бессмысленная куча постов наталкивает но новые идеи ведения статистики :)
 

DeadMorozBLR

Новичок
Фанат, если не сложно, стукнись ко мне в ICQ, чтобы не засорять тему.
 

Фанат

oncle terrible
Команда форума
DeadMorozBLR
во-первых, тебе больше помогает здесь TuBu
во-вторых, обсуждение того или иного вопроса - это не засорение темы. Собственно, для этого и придуман форум.
А в асю стучаться - это, скорее, на сайт знакомств надо :)
 

DeadMorozBLR

Новичок
ok
тогда вот: таблица называется hits, поле с датой называется timestamp? что на что менять?
 

Фанат

oncle terrible
Команда форума
эээээ....
Ты не знаешь, что надо заменять в приведенном тебе примере, при том, что там используется ЕДИНСТВЕННАЯ таблица?

извини, а как ты предполагал использовать данный тебе ответ?
Зачем было вообще спрашивать, как составить запрос, если ты заранее знал, что не поймешь ответа?
Может быть тебьбе сначала просто поучиться запросы посоставлять?
узнать, где там что пишется?
Где имя таблицы, а где - имена полей?
 
Сверху