我有一个表(统计信息),其中包含用户,日期(日期时间),页面和IP列。 我有这个问题:
SELECT * FROM statistics WHERE page LIKE '%page_name' ORDER BY date DESC LIMIT 30.
可以显示访问该页面的所有用户。但我想每天显示独特的ips,例如DISTINCT ip (per day)
我不知道如何添加'每日'部分......
任何想法? :)
答案 0 :(得分: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
答案 1 :(得分:0)
如果要显示唯一IP的数量,可以使用MySQL的GROUP BY:
SELECT COUNT(DISTINCT(ip)), DATE(date)
FROM statistics
GROUP BY date
ORDER BY date DESC
如果您想要每个日期的所有唯一IP列表,您需要在检索完所有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
}
}