|
сложный запрос. профи велкам
|
|||
---|---|---|---|
#18+
введение: реализую задачу перлом, но уж очень большие затраты идут при выполнении кода, поэтому решил оптимизировать за счет продуманных запросов к БД итак. есть таблица. поля: session_id ip_id что за таблица: в ней лежит статистика посещения юзеров (сесс ид) и их ИП (ип ид) у одной сессии может быть разные ип, а может и один. гимор в том, что есть пользователи, у которых не включены куки - и сесс ид для них генерится постоянно новая(и в базу добавляется тоже). и таких пользователей можно определить по единичности сесс ид в таблице. вот их надо и посчитать как ? только отобрав ВСЕ уникальные сесс ид, и посчитав по ип ид т.е. получение количества session_id которые существуют в базе в единственном экземпляре, НО те, у которых одинаковый ip_id или из множества уникальных session_id надо найти кол-во уникальных ip_id или у нас есть множество single-session_id ,для такого множества надо найти кол-во уникальных ip или нужно посчитать всех пользователей с неповторяющимися сессиями как один юзер, с учетом что разные ИП - разные люди пример таблици: sesion_id ip_id 1000 1 1000 1 1000 2 1000 2 1001 3 1002 3 1003 3 1004 4 1005 4 1006 4 1001-1003 и 1004-1006 - присутствуют в единичном случае. но ip_id у 1001-1003 одинаков (3) и для 1004-1006 то же (4) надо получить число неповторяемых сесс_ид НО имеющих один ip_id в нашем примере - 2 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2003, 13:24 |
|
сложный запрос. профи велкам
|
|||
---|---|---|---|
#18+
Опираться на то, что "разные ИП - разные люди" - имхо - неправильно, так как через один IP (прокси-сервер) может ходить куча народа... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2003, 14:30 |
|
сложный запрос. профи велкам
|
|||
---|---|---|---|
#18+
разный ИП вкупе! с отключенными куками пользователи считаются по ид_сессии, который хранится вкуке. ТОЛЬКО те юзера, которые неиспользуют куки, считаются по ИПам. а больше никак. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2003, 14:34 |
|
сложный запрос. профи велкам
|
|||
---|---|---|---|
#18+
А что - не может быть такого - что несколько пользователей ходит через один прокси у у них отключены куки? Ещо куки может убивать прокси-сервер... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2003, 14:49 |
|
сложный запрос. профи велкам
|
|||
---|---|---|---|
#18+
может. но что прикажешь делать? каким еще образом идентифицировать пользователей? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2003, 15:10 |
|
сложный запрос. профи велкам
|
|||
---|---|---|---|
#18+
яяхххууу! сделал. правда через временную таблицу.. но все-таки без использования перла (без генерации кучи выборок) create temporary table xxx( id int ); insert into xxx select session_id from stat_request group by session_id having count(session_id)=1; # получаем список уникальных сессий, которые встречаются только один раз. и записываем во временную таблицу. select count(ip_id), ip_id from stat_request , xxx where stat_request.session_id=xxx.id group by ip_id # количество строк результата - количество ип, для которых сессии встречаются только один раз ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2003, 16:11 |
|
сложный запрос. профи велкам
|
|||
---|---|---|---|
#18+
Если отбросить ненадежность такой идентификации пользователей, то вот решение задачи: CREATE TEMPORARY TABLE unique_sessions ( session_id INT, ip_id INT, count INT ); INSERT INTO unique_sessions SELECT session_id, ip_id, count(*) AS count FROM sessions GROUP BY session_id HAVING count = 1; SELECT count(DISTINCT ip_id) FROM unique_sessions; ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2003, 16:17 |
|
сложный запрос. профи велкам
|
|||
---|---|---|---|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7.
Вроде как бы кол-во записей полученных в этом запросе должно выдавать нужное тебе число ... |
|||
:
Нравится:
Не нравится:
|
|||
16.04.2003, 17:26 |
|
|
start [/forum/topic.php?fid=47&msg=32142178&tid=1856060]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
40ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
2ms |
others: | 248ms |
total: | 387ms |
0 / 0 |