2010-10-22 3 views
1

У меня есть таблица (статистика) с столбцами User, Date (datetime), Страница и IP. У меня есть этот запрос:Справка по запросу статистики пользователя MYSQL?

SELECT * FROM statistics WHERE page LIKE '%page_name' ORDER BY date DESC LIMIT 30. 

Это нормально, чтобы отобразить все пользователи, которые посетили эту страницу. Но я бы хотел показать уникальные ips в день, что-то вроде DISTINCT ip (per day) Не знаю, как добавить элемент «в день» ...

любые идеи? :)

ответ

0

Если вы хотите, чтобы показать количество уникальных IP-адресов, вы можете использовать в MySQL GROUP BY:

SELECT COUNT(DISTINCT(ip)), DATE(date) 
FROM statistics 
GROUP BY date 
ORDER BY date DESC

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

$sql = "SELECT DISTINCT(ip) AS ip, DATE(date) 
     FROM statistics 
     ORDER BY date DESC"; 
$res = mysql_query($sql); 
$ips = array(); 
while ($r = mysql_fetch_object($res)) { 
    $ips[$r->date][] = $r->ip; 
} 

foreach ($ips as $date => $list) { 
    // echo the $date 
    foreach ($list as $ip) { 
    // go through all the ips 
    } 
}
0

Нечто подобное должно сделать работу

SELECT COUNT(ip), DATE_FORMAT(date, '%Y-%m-%d') AS day 
FROM statistics WHERE page LIKE '%page_name' 
GROUP BY day ORDER BY day DESC LIMIT 30