Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вопрос по SQL [MySQL]


DmitryNekl ©   (2007-02-09 05:16:00) 

Здравствуйте, мастера!

У меня проблема такая. Собираю статистику посещения сайта. Есть таблица такой структуры:

id int(11)
user_ip varchar(15)
page varchar(255)
date_time datetime
referer varchar(255)

Хочу получить данные о числе хостов и хитов по страницам за  определенный период. Сделал такой запрос:

SELECT `page`, count(distinct `user_ip`) as 'hosts', count(`id`) as 'hits' FROM `tbl_stat` WHERE DATE(`date_time`) >= '2007-01-25' and DATE(`date_time`) <= '2007-02-09' GROUP BY `page`

В результате выдается:
...
/articles.html?id=1 2 2
/articles.html?id=2 2 2
/articles.html?id=1 3 4
/articles.html?id=2 1 1
/articles.html?id=1 1 2
/articles.html?id=2 1 1
...

Никак не могу понять, откуда берутся эти повторения страниц и как сделать так, чтобы данные по страницам дейсвительно группировались, т.е. вместо шести вышеприведенных строчек были две:

/articles.html?id=1 6 8
/articles.html?id=2 4 4

Надеюсь на вашу помощь! Заранее спасибо!


Sergey13   (2007-02-09 10:48:00) [1]

> [4] DmitryNekl   (09.02.07 10:29)

Сделай двумя запросами. Все таки группировка подразумевает связанные данные (типа количество и сумма чего-то), а ты хочешь получить просто 2 несвязанных результата. Или я не очень въехал в условия.


DmitryNekl   (2007-02-09 10:29:00) [2]

Если убрать distinct, повторения пропадают.
Но зато появляется вопрос - а как сделать тогда то, что я хочу?


Sergey13   (2007-02-09 10:13:00) [3]

А если вместо count(distinct `user_ip`) сделать просто count(`user_ip`) повторения останутся?
Я понимаю, что смысл будет другой, просто сомнения меня гложут насчет правомерности подобного действия, а проверять самому лень.


DmitryNekl   (2007-02-09 10:00:00) [4]

Хм... я непосредственно перед выполнением запроса его просматриваю - именно этот :(. А в чем еще может быть проблема?


ЮЮ   (2007-02-09 05:44:00) [5]

Согласно всем првилам SQL  должен получаить именно то что хочешь. Единственое предположение, что выполняется вовсе не тот запрос, что ты привёл.


Наверх

Титульная страница Поиск, карта сайта Написать письмо