powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / счетчик загрузок с ведением подробной статистики
25 сообщений из 41, страница 1 из 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
25 сообщений из 41, страница 1 из 2
Форумы / MySQL [игнор отключен] [закрыт для гостей] / счетчик загрузок с ведением подробной статистики
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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