вопрос по SELECT count(DISTINCT ip)

DmitryShustov
На сайте с 27.11.2004
Offline
255
1943

Всем хая, вот у мну вопрос есть, собираются ip за день и пихаются в некую табличку.. На выдаче стоит запрос SELECT count(DISTINCT ip) ..

посчитал вручную и посмотрел то что выдает - цифры разные!!! как такое могет быть?

aspnet
На сайте с 17.09.2005
Offline
68
#1
как такое могет быть?

запрос выдает правильно, а вы неправильно считаете - такое могет быть запросто 😎

SELECT count(DISTINCT ip) ..

вы скажите что хотели посчитать

DmitryShustov
На сайте с 27.11.2004
Offline
255
#2

$query = "SELECT count(DISTINCT ip) AS daycount FROM stats WHERE time >= $dt1 and time <= $dt2";

тут $dt1, $dt2 - время в юних формате

$result = @MQ($query) or die("$query <b>failed!</b><br>".mysql_error());

$darray = mysql_fetch_array($result);

echo 'всего ip -'.$day_array[daycount];

ну вот что тут может быть неправильно?

Считаю я сумму разных айпишников за день.

KO
На сайте с 19.11.2005
Offline
56
#3
DmitryShustov:
$query = "SELECT count(DISTINCT ip) AS daycount FROM stats WHERE time >= $dt1 and time <= $dt2";

тут $dt1, $dt2 - время в юних формате

$result = @MQ($query) or die("$query <b>failed!</b><br>".mysql_error());
$darray = mysql_fetch_array($result);
echo 'всего ip -'.$day_array[daycount];

ну вот что тут может быть неправильно?
Считаю я сумму разных айпишников за день.

ну кроме того что в строке

echo 'всего ip -'.$day_array[daycount];

нужно $day_array[daycount] заменить на $darray["daycount"], остальное должно работать

DmitryShustov
На сайте с 27.11.2004
Offline
255
#4

эт я уже тут накосячил, в коде все ок. ну вот и хрен поймешь почаму она врет.

BVod
На сайте с 19.01.2004
Offline
49
#5
DmitryShustov:
эт я уже тут накосячил, в коде все ок. ну вот и хрен поймешь почаму она врет.

Если записей не очень много - можно и посмотреть - выводим результат запроса:

$query = "SELECT ip FROM stats WHERE time >= $dt1 and time <= $dt2";

... и смотрим - какие записи не выводятся.... и пытаемся понять - почему... 🙄

прошу прощения - запрос:

$query = "SELECT * FROM stats WHERE time >= $dt1 and time <= $dt2";

(т.к. косяк может быть в другом поле...)

BVod
На сайте с 19.01.2004
Offline
49
#6

... и еще....

А у Вас IP-адреса всегда определяются? Т.е. нет такого, что в таблице запись с пустым полем IP?

DmitryShustov
На сайте с 27.11.2004
Offline
255
#7

RE> (т.к. косяк может быть в другом поле...)

косяк может быть в данном запросе в поле ip и time по идее и все.

ip всегда имеют какое либо значение.

В принципе разобрался с ситуевиной. Т.к. мой прайс с данного сайта забирается в xml многими системами паходу считаются все и они и поисковики и дурак какой то цены у меня с сайта постоянно сканирует.

mustafa
На сайте с 28.10.2005
Offline
202
#8

в select лучше использовать по условию where time>= now() - INTERVAL... and time<=now() - INTERVAL...

А вообще нужно ручками все проверить...

Желаю удачи.

DmitryShustov
На сайте с 27.11.2004
Offline
255
#9

СПАСИБО ВСЕМ! ТЕМА ЗАКРЫТА )))

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий