2010-10-22 100 views
1

我有一个表(统计)与列用户,日期(日期时间),页面和IP。 我有这个疑问:MYSQL用户统计查询帮助?

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

这是确定以显示访问该网页中的所有用户。但我想显示独特的ips每天,像DISTINCT ip (per day) 我不知道如何添加'每一天'部分...

任何想法? :)

回答

0

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

类似的东西。如果你想显示独特的IP地址,你可以使用量应该做的工作

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