Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Помогите создать сложный запрос (WebSQLNeeder) 15/07/2007 - 10:50:11
      Re: Помогите создать сложный запрос (bac) 15/07/2007 - 14:28:16
      Re: Помогите создать сложный запрос (WebSQLNeeder) 15/07/2007 - 15:19:03
      Re: Помогите создать сложный запрос (Servekon) 16/07/2007 - 17:41:54
      Re: Помогите создать сложный запрос (bac) 16/07/2007 - 22:29:51
      Re: Помогите создать сложный запрос (xeim) 17/07/2007 - 07:28:21

> Original message text:
> From: WebSQLNeeder - 15/07/2007 - 10:50:11
> Subject:Помогите создать сложный запрос
> -----------------
> Значит есть таблица, в которую сохраняются айпи людей, которые кликнули по ссылке. Я сделал с помощью пхп за период "сегодня" и "вчера" выборку сколько уникальных айпи кликнуло. А от проблема как сделать то же самое скажем за неделю, за месяц и "всего"? Простое SELECT * не поможет так как оно выдаст все клики без определения повторяющихся притом повторяющиеся засчитываются если в разные дни были совершены ...
>


From: xeim - 17/07/2007 - 07:28:21
Subject:Помогите создать сложный запрос
-----------------
Статистику по уникальным ip адресам лушче собирать в отдельной таблице. Например такой:

CREATE TABLE `daily_stat`(
`date` date NOT NULL,
`ip` int(10) unsigned NOT NULL,
PRIMARY KEY (`date`,`ip`)
);

При клике на ссылку, выполняем следующий запрос:

REPLACE `daily_stat`
SET `daily_stat`.`date` = "2007-07-17",
`daily_stat`.`ip` = INET_ATON("127.0.0.1")

В качестве параметров подставляем текущую дату и ip-адрес клиента. При повторном обращении того же клиента в тот же день, новая запись в таблицу добавлена не будет! Таким образом собираем статистику только о уникальных ip адресах.

Теперь, как получить количество уникальных ip адресов на определенную дату (сегодня, вчера):

SELECT COUNT(*)
FROM `daily_stat`
WHERE `daily_stat`.`date` = "2007-07-17"

Как получить количество уникальных ip адресов за определенный диапазон времени (неделя, месяц):

SELECT COUNT(*)
FROM `daily_stat`
WHERE `daily_stat`.`date`
BETWEEN "2007-07-01" AND "2007-07-31"

Какие это дает преимущества? Такая схема будет работать при любой нагрузке на сайт с хорошей скоростью. К тому же если это единственная причина сбора статистики, позволит сильно съэкономить место в БД.


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
31879



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |