Справка по статистике пользователей MYSQL? - PullRequest
1 голос
/ 23 октября 2010

У меня есть таблица (статистика) со столбцами Пользователь, Дата (дата / время), Страница и IP.У меня есть этот запрос:

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

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

Есть идеи?:)

Ответы [ 2 ]

0 голосов
/ 23 октября 2010

Если вы хотите показать количество уникальных 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 голосов
/ 23 октября 2010

Что-то подобное должно делать работу

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
...