powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / счетчик загрузок с ведением подробной статистики
41 сообщений из 41, показаны все 2 страниц
счетчик загрузок с ведением подробной статистики
    #33098659
Nuker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Пишу счетчик загрузок с ведением подробной статистики
Есть две таблицы:
 [dl_files]: хранит ссылки
 	id (autoinc)
 	title (varchar)
 	url (varchar)
 	updated (timestamp)

 [dl_counter]: хранит клики
 	id (autoinc)
 	parent_id (int)
    host (varchar)
    user_agnt (varchar)
    date (int(14)) при клике добавляется запись с текущей датой

необходимо одним запросом вывести такой результат:
id | title | url | сегодня | вчера | за неделю | за месяц | за год | всего
еще бы за период (что лучше наверно).
сгруппировать все это по dl_files.id
...
Рейтинг: 0 / 0
счетчик загрузок с ведением подробной статистики
    #33100334
Dmitry_Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поробуй cчитать клики по условиям с помощью Case:

CASE value WHEN [compare-value] THEN result [WHEN [compare-value] THEN result ...] [ELSE result] END
CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END
...
Рейтинг: 0 / 0
счетчик загрузок с ведением подробной статистики
    #33100379
Nuker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dmitry_Chпоробуй cчитать клики по условиям с помощью Case:

CASE value WHEN [compare-value] THEN result [WHEN [compare-value] THEN result ...] [ELSE result] END
CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END

Непонял ... IF Чего?? ELSE Чего??
Я же не просто так для каждого клика отдельную запись создаю.
Если ты заметил присутствуют поля host и user_agnt
так-же дата и время клика.
Вдруг захочется по часам статистику :)

Тут вроде ничего сложного, наверно три - четыре вложенных запроса и join,
но как-то не соображу.
...
Рейтинг: 0 / 0
счетчик загрузок с ведением подробной статистики
    #33100442
Dmitry_Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если дата=сегодня, то суммируешь счетчик_сегодня, счетчик_занеделю и т.д.
если дата=вчера, то суммируешь счетчик_вчера, счетчик_занеделю и т.д.

Subqueries - только с 4.1 версии
...
Рейтинг: 0 / 0
счетчик загрузок с ведением подробной статистики
    #33100447
Nuker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dmitry_Chесли дата=сегодня, то суммируешь счетчик_сегодня, счетчик_занеделю и т.д.
если дата=вчера, то суммируешь счетчик_вчера, счетчик_занеделю и т.д.

Subqueries - только с 4.1 версии

Ага?! и так за год! :) .
...
Рейтинг: 0 / 0
счетчик загрузок с ведением подробной статистики
    #33100481
Dmitry_Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nuker Dmitry_Chесли дата=сегодня, то суммируешь счетчик_сегодня, счетчик_занеделю и т.д.
если дата=вчера, то суммируешь счетчик_вчера, счетчик_занеделю и т.д.

Subqueries - только с 4.1 версии

Ага?! и так за год! :) .

ага. всё должно получиться в одном запросе.
...
Рейтинг: 0 / 0
счетчик загрузок с ведением подробной статистики
    #33100523
Nuker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dmitry_Ch
ага. всё должно получиться в одном запросе.
А как быть с useragent's ?
Мне необходимо хранить каждый клик отдельной записью.
Я спрашиваю как из имеющейся структуры вывести подробную статистику.

Надо что-то типа этого, но уже с датами
Код: plaintext
1.
2.
3.
4.
select 
 download_files.id, title, url
 from download_files
 left join download_counter on download_files.id=parent_id
 group by download_files.id
...
Рейтинг: 0 / 0
счетчик загрузок с ведением подробной статистики
    #33100548
Dmitry_Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nuker Dmitry_Ch
ага. всё должно получиться в одном запросе.
А как быть с useragent's ?
Мне необходимо хранить каждый клик отдельной записью.
Я спрашиваю как из имеющейся структуры вывести подробную статистику.

Надо что-то типа этого, но уже с датами
Код: plaintext
1.
2.
3.
4.
select 
 download_files.id, title, url
 from download_files
 left join download_counter on download_files.id=parent_id
 group by download_files.id


ну, правильно.
из главной таблицы выбираешь ссылки, а из подчинненной подробную статистику по ссылкам и объединяешь с помощью джоинов.
...
Рейтинг: 0 / 0
счетчик загрузок с ведением подробной статистики
    #33100609
Nuker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dmitry_Ch Nuker
Надо что-то типа этого, но уже с датами
Код: plaintext
1.
2.
3.
4.
select 
 download_files.id, title, url
 from download_files
 left join download_counter on download_files.id=parent_id
 group by download_files.id


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

Вот для общего количества
Код: plaintext
1.
2.
3.
4.
5.
6.
select 
 download_files.id, title, url,
 max(download_counter.click_date) as last_click,
 count(download_counter.parent_id) as total
 from download_files
 left join download_counter on download_files.id=parent_id
 group by download_files.id

Что дальше?
...
Рейтинг: 0 / 0
счетчик загрузок с ведением подробной статистики
    #33100656
Dmitry_Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nuker Dmitry_Ch Nuker
Надо что-то типа этого, но уже с датами
Код: plaintext
1.
2.
3.
4.
select 
 download_files.id, title, url
 from download_files
 left join download_counter on download_files.id=parent_id
 group by download_files.id


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

Вот для общего количества
Код: plaintext
1.
2.
3.
4.
5.
6.
select 
 download_files.id, title, url,
 max(download_counter.click_date) as last_click,
 count(download_counter.parent_id) as total
 from download_files
 left join download_counter on download_files.id=parent_id
 group by download_files.id

Что дальше?

если бы mysql исп. храним. процедуры, то не было бы проблем вообще.

А так покрути конструкцию типа
SELECT SUM(CASE ... WHEN ... THEN .. ELSE .. END) As F1

Ссори, времени на больше нет.
...
Рейтинг: 0 / 0
счетчик загрузок с ведением подробной статистики
    #33101027
wolk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
конкретно: таблицы, учавствующие в группировке и немного данных в студию, и, обязательно формат timestamp-a
...
Рейтинг: 0 / 0
счетчик загрузок с ведением подробной статистики
    #33101321
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
select 
 download_files.id, title, url, count(download_counter.parent_id) as заДень
 from download_files left join download_counter on download_files.id=parent_id
 group by download_files.id where date<сейчас and date>вчера
выдаст статистику за день?
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm
...
Рейтинг: 0 / 0
счетчик загрузок с ведением подробной статистики
    #33101948
Nuker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wolkконкретно: таблицы, учавствующие в группировке и немного данных в студию, и, обязательно формат timestamp-a

Вложил в сообщение.
...
Рейтинг: 0 / 0
счетчик загрузок с ведением подробной статистики
    #33101960
Nuker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maXmo
Код: plaintext
1.
2.
3.
select 
 download_files.id, title, url, count(download_counter.parent_id) as заДень
 from download_files left join download_counter on download_files.id=parent_id
 group by download_files.id where date<сейчас and date>вчера
выдаст статистику за день?

Нет ничего не выдаст. см аттач.
...
Рейтинг: 0 / 0
счетчик загрузок с ведением подробной статистики
    #33101986
wolk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nukerнеобходимо одним запросом вывести такой результат:
id | title | url | сегодня | вчера | за неделю | за месяц | за год | всего
еще бы за период (что лучше наверно).


не получится, т.к. у тебя данные в таблице лежат:
id title url updated total
1 xlink http://orbita.perm.ru/files/xlink.zip 20050603212522 1176

указывается дата последнего обновления и общее кол-во загрузок. каким образом ты хотел выводить статистику по url за определенные периоды?? для этого нужно ложить каждый запрос отдельно в таблицу, а при извлечении их суммировать по url, например
create table download_counter (id int unsigned not null auto_increment primary key, url tynitext not null, click_date timestamp(14) not null, user_agent tynitext)
id нужен только в том случае, если будешь удалять или редактировать данные. вот из такой таблицы можно легко вытягивать то, что тебе нужно.
...
Рейтинг: 0 / 0
счетчик загрузок с ведением подробной статистики
    #33102596
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolk а что, таблицы dl_counter там нету? Которая вторая.
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm
...
Рейтинг: 0 / 0
счетчик загрузок с ведением подробной статистики
    #33102665
wolk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maXmowolk а что, таблицы dl_counter там нету? Которая вторая.
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm
есть:
id parent_id click_date host user_agent
1 1 0000-00-00 00:00:00 unknown unknown
2 1 0000-00-00 00:00:00 unknown unknown
3 1 0000-00-00 00:00:00 unknown unknown

и что ты по ней можешь узнать??
...
Рейтинг: 0 / 0
счетчик загрузок с ведением подробной статистики
    #33102855
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в ней и предполагается хранить каждый клик, parent_id - внешний ключ.
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm
...
Рейтинг: 0 / 0
счетчик загрузок с ведением подробной статистики
    #33102976
wolk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maXmoв ней и предполагается хранить каждый клик, parent_id - внешний ключ.
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm

тогда зачем вторая таблица и дублирование данных, таких как время последнего скачивания и кол-во загрузок, и по каким критериям эти таблицы группируются и для чего?? это все прекрасно вытягивается из одной таблицы и подсчитывается средствами mysql.
...
Рейтинг: 0 / 0
счетчик загрузок с ведением подробной статистики
    #33103039
wolk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
получается, что клик плюсуется сначала в одну таблицу, затем id строки к которой он прибавился по url вносится во вторую таблицу с временем=времени последнего скачивания, строкой браузера и всему этому назначается опять же свой id, зачем так громоздко??
есть таблица:
id url time agent host
нужно общее количество скачиваний??
select count(id) from count where url=url
дата последнего скачивания??
select max(time) from count where url=url
нужна статистика по скачиваниям??
без проблем все решается вложенным запросом, с учетом вида поля time (не привожу, т.к. запрос нужно формировать конкретный запрос и проверять работоспособность для конкретных целей, да и синтаксис вложенных запросов на вскидку не помню)
---------
С уважением!
wolk.nutep.com
...
Рейтинг: 0 / 0
счетчик загрузок с ведением подробной статистики
    #33103061
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select count(id) from count where url=url
такие запросы на мускле выполняются весьма медленно. Нормализация нарушается для быстроты.
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm
...
Рейтинг: 0 / 0
счетчик загрузок с ведением подробной статистики
    #33103121
wolk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>такие запросы на мускле выполняются весьма медленно.
В сраснении с чем??
---------
С уважением!
wolk.nutep.com
...
Рейтинг: 0 / 0
счетчик загрузок с ведением подробной статистики
    #33103126
wolk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а то, что тоже самое только по периодам с объединением 2-х таблиц считать нужно - не смущает??
---------
С уважением!
wolk.nutep.com
...
Рейтинг: 0 / 0
счетчик загрузок с ведением подробной статистики
    #33103300
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wolk>такие запросы на мускле выполняются весьма медленно.
В сраснении с чем??да, мой баг... В сравнении с ентерпрайз-левел субд. Ну мля... сделано, значит надо.

а то, что тоже самое только по периодам с объединением 2-х таблиц считать нужно - не смущает??
так то статистика. Она, как упоминалось, может и почасовой быть.
...
Рейтинг: 0 / 0
счетчик загрузок с ведением подробной статистики
    #33103402
Dmitry_Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
лови!

select id, title, url, sum(case when date>'2004-01-01' then 1 else 0 end) AS Period1, sum(case when date>'2003-01-01' then 1 else 0 end) AS Period2
from dl_counter, dl_files
where parent_id in (select id from dl_files) group by parent_id

не называй поля ключевыми словами date, int, count и т.д.
...
Рейтинг: 0 / 0
счетчик загрузок с ведением подробной статистики
    #33103460
Nuker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще раз объясняю:
...
Рейтинг: 0 / 0
счетчик загрузок с ведением подробной статистики
    #33103480
wolk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
))) а сразу нельзя так написать было??
если не ответят завтра с работы отпишу.
---------
С уважением!
wolk.nutep.com
...
Рейтинг: 0 / 0
счетчик загрузок с ведением подробной статистики
    #33104100
Dmitry_Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NukerЕще раз объясняю:

посмотри предыдущий мессадж. Там запрос даже больше выдает информации.
...
Рейтинг: 0 / 0
счетчик загрузок с ведением подробной статистики
    #33104465
wolk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
нет! запрос получается кривой и невъ...нно большим, делай небольшие запросы и доставай все что нужно.
да и вообще что-то немного тяжко, может попозже додумаюсь.
---------
С уважением!
wolk.nutep.com
...
Рейтинг: 0 / 0
счетчик загрузок с ведением подробной статистики
    #33104571
wolk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dmitry_Ch NukerЕще раз объясняю:

посмотри предыдущий мессадж. Там запрос даже больше выдает информации.

как можно задать формат даты, что-то типа такого dateformat(click_date,'%Y-%m-%d')=curdate(), но чтоб работало? иначе запрос будет тоже очень большим.
...
Рейтинг: 0 / 0
счетчик загрузок с ведением подробной статистики
    #33106258
Nuker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А может с такой структурой будет проще?
...
Рейтинг: 0 / 0
счетчик загрузок с ведением подробной статистики
    #33106262
Nuker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wolk
да и вообще что-то немного тяжко, может попозже додумаюсь.

Вот и мне тяжко :) иначе-бы додумался. :)
А может просто мозги отрофировались,
когда сам на задачу смотрю, создается впечатление - "школьный курс",
а сядешь за клаву - ничего не пишется.
...
Рейтинг: 0 / 0
счетчик загрузок с ведением подробной статистики
    #33107629
wolk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dmitry_Chлови!

select id, title, url, sum(case when date>'2004-01-01' then 1 else 0 end) AS Period1, sum(case when date>'2003-01-01' then 1 else 0 end) AS Period2
from dl_counter, dl_files
where parent_id in (select id from dl_files) group by parent_id

не называй поля ключевыми словами date, int, count и т.д.

вот человек хорошую вещь написал, отсюда и пляши
...
Рейтинг: 0 / 0
счетчик загрузок с ведением подробной статистики
    #33111638
Nuker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wolk Dmitry_Chлови!

select id, title, url, sum(case when date>'2004-01-01' then 1 else 0 end) AS Period1, sum(case when date>'2003-01-01' then 1 else 0 end) AS Period2
from dl_counter, dl_files
where parent_id in (select id from dl_files) group by parent_id

не называй поля ключевыми словами date, int, count и т.д.

вот человек хорошую вещь написал, отсюда и пляши

что-то ничего не вышло :(

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
select 
      download_files.id,  title,  url,
      sum(case when click_date>'2004-01-01' then  1  else  0  end) AS Period1,
      sum(case when click_date>'2003-01-01' then  1  else  0  end) AS Period2,
from download_counter, download_files
where
  download_counter.parent_id in (select download_files.id from download_files)
  group by download_files.id
...
Рейтинг: 0 / 0
счетчик загрузок с ведением подробной статистики
    #33113101
wolk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а у тебя за указанные периоды есть записи в БД?? и дату форматировать нужно в соответствии с твоей базой
---------
С уважением!
wolk.nutep.com
...
Рейтинг: 0 / 0
счетчик загрузок с ведением подробной статистики
    #33113338
Nuker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wolkа у тебя за указанные периоды есть записи в БД?? и дату форматировать нужно в соответствии с твоей базой
Дак все равно неправильно работает, причем дело не в дате совсем.
Это неверное решение задачи, один join надо использовать полюбому.
...
Рейтинг: 0 / 0
счетчик загрузок с ведением подробной статистики
    #33113343
wolk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я у себя проверял запрос - прекрасно работал
---------
С уважением!
wolk.nutep.com
...
Рейтинг: 0 / 0
счетчик загрузок с ведением подробной статистики
    #33113841
Nuker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wolkЯ у себя проверял запрос - прекрасно работал
Ага, с одной записью в [download_files] наверно прекрасно.
...
Рейтинг: 0 / 0
счетчик загрузок с ведением подробной статистики
    #33115410
wolk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nuker wolkЯ у себя проверял запрос - прекрасно работал
Ага, с одной записью в [download_files] наверно прекрасно.

CREATE TABLE `count` (
`id` int(10) unsigned NOT NULL auto_increment,
`parent_id` int(10) unsigned NOT NULL default '0',
`click_date` datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

INSERT INTO `count` VALUES (1,1,'2004-12-01 12:00:30'),(2,1,'2005-12-01 12:00:30'),(3,2,'2005-01-01 12:00:30'),(4,2,'2005-01-02 12:00:30'),(5,2,'2005-01-02 13:00:30'),(6,2,'2005-01-03 13:00:30'),(7,3,'2005-01-03 13:00:30'),(8,3,'2005-01-03 13:00:30'),(9,3,'2005-01-03 14:00:30'),(10,3,'2004-01-03 14:00:30'),(11,1,'2005-06-07 11:03:08'),(12,1,'2005-06-07 11:03:10');

CREATE TABLE `url` (
`id` int(10) unsigned NOT NULL auto_increment,
`url` tinytext NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

INSERT INTO `url` VALUES (1,'wolk.nutep.com'),(2,'nutep.com'),(3,'mail.ru');
...
Рейтинг: 0 / 0
счетчик загрузок с ведением подробной статистики
    #33116698
DocAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmoselect count(id) from count where url=url
такие запросы на мускле выполняются весьма медленно. Нормализация нарушается для быстроты.

И всё же, почему медленно-то, особенно по индексу?
...
Рейтинг: 0 / 0
счетчик загрузок с ведением подробной статистики
    #33244581
Nuker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Решение простое как все гениальное:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
---------------------------
downloads:
  id
  filename
---------------------------
downloads_counter
  id
  filename
  click_stamp
---------------------------

SELECT
 COUNT(downloads_counter.id) as clicks,
 downloads.filename
 FROM downloads
 LEFT JOIN downloads_counter ON downloads.filename = downloads_counter.filename
 AND downloads_counter.click_stamp='2005-08-31 20:00:00'
 GROUP BY downloads.filename

click_stamp: TimeStamp
Тут уже остается правильно сформировать дату для запроса.

Если что-то неверно просьба отписать nuker@perm.ru
...
Рейтинг: 0 / 0
41 сообщений из 41, показаны все 2 страниц
Форумы / MySQL [игнор отключен] [закрыт для гостей] / счетчик загрузок с ведением подробной статистики
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]