【问题标题】:Filtering log file using COUNT, GROUP BY, ORDER BY MAX使用 COUNT、GROUP BY、ORDER BY MAX 过滤日志文件
【发布时间】:2011-08-01 18:31:45
【问题描述】:

您好,我有一台记录客人和用户导航到的机器,我正在尝试编写一个 php 脚本,该脚本将对日志进行排序并为我总结人们倾向于去的前五个目的地,即访问了哪些页面大多数。

到目前为止,这是我所拥有的:

<?php

#### mysql connection #####
$db = mysql_connect("_","guest","_");
mysql_select_db(networkr) or die("Couldn't select the database");
echo "<table>";
$query = "SELECT uri LIMIT 5, COUNT(date) GROUP BY uri ORDER BY MAX(COUNT(date)), uri DESC";
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result)){
    echo "Top 5 Destinations:". $row['COUNT(date)'] ." ". $row['uri'] .".";
    echo "<br />";
}
echo "</table>";
?>

所以我试图让它计算使用日期作为唯一标识符访问特定页面 (uri) 的所有时间。然后我希望它按从高到低的降序列出计数。然后只显示前五个访问量最大的页面。

我在网络浏览器中打开 php 脚本时遇到的错误是:

您的 SQL 语法有错误; 检查对应的手册 您的 MySQL 服务器版本 在 'COUNT(date) 附近使用正确的语法 GROUP BY URI ORDER BY MAX(COUNT(date)), uri DESC' 在第 1 行

我认为这是某种语法错误,因为我不是 php 专家。如果有人可以帮助我检查脚本中的错误,将不胜感激。

【问题讨论】:

    标签: php mysql logging count group-by


    【解决方案1】:

    LIMIT 应该出现在查询的其余部分之后,并且您没有使用 FROM 子句指定从何处获取记录,如下所示:

    SELECT uri, COUNT(date) 
    FROM <tablename>
    GROUP BY uri 
    ORDER BY MAX(COUNT(date)), uri DESC 
    LIMIT 5
    

    【讨论】:

      【解决方案2】:
      1. 您缺少 FROM 子句。
      2. 将 LIMIT 移到 ORDER BY 之后

        SELECT uri, COUNT(date) FROM YourTable GROUP BY uri ORDER BY MAX(COUNT(date)), uri DESC LIMIT 5

      【讨论】:

        【解决方案3】:

        您不必使用MAX()。只需使用下面的查询。

        SELECT uri, COUNT(date) AS visits
        FROM table
        GROUP BY uri
        ORDER BY visits DESC
        LIMIT 5
        

        而你echo 是这样的:

        while($row = mysql_fetch_assoc($result)){
            echo "Top 5 Destinations:". $row['visits'] ." ". $row['uri'];
            echo "<br />";
        }
        

        【讨论】:

          猜你喜欢
          • 2019-01-27
          • 2012-05-06
          • 2011-04-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-01-25
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多