-1

我有一个这样的表点击

+-----+-----+-------+-------+
|  id |   time   |   site   |
+-----+-----+-------+-------+
|  1  | 8 4 2013 |   site1  |
|  2  | 8 4 2013 |   site1  |
|  3  | 9 4 2013 |   site2  | 
|  4  | 6 4 2013 |   site1  |
+-----+-----+------+--------+

我想显示这样的结果

   Date      |       Count
  8 4 2013   |       2 click
  6 4 2013   |       1 click

我有这个代码

$id = 'site1';
$getclk = mysql_query("SELECT * FROM clicks WHERE site='$id'");
$clk = mysql_num_rows($getclk);
print $clk;

此代码仅显示行数,我想显示按时间分组的行数。

GROUP BY 命令适用于此,但我不知道该怎么做。

请帮助我,我不知道该怎么做,请给我完整的代码来做到这一点。

4

5 回答 5

1

我认为应该是:

SELECT COUNT (id) as countClicks, time as Date
FROM clicks
[WHERE site = ?]
GROUP BY time
ORDER BY countClicks DESC

此外,您不应该使用 mysql_* 函数,因为它们已被弃用。

于 2013-08-13T07:50:22.457 回答
0
SELECT time, COUNT(*) as count FROM clicks GROUP BY time
于 2013-08-13T07:50:54.117 回答
0
$getclk="SELECT date,count(*) as c FROM Clicks WHERE site='$id' GROUP BY date ORDER BY c DESC";

然后循环遍历结果并显示它们。 please give me full code to do this.很抱歉,这不是正确的论坛

于 2013-08-13T07:49:10.483 回答
0

这应该为您提供您要求的格式的结果:

$getclk = mysql_query("select time as Date, concat(count(*), ' click') as Count 
                       from Clicks 
                       where site = '$id' 
                       group by time 
                       order by Count desc");

请注意,如果您在 php 中而不是 mysql 中附加此文本,则使用 mysql 函数concat()功能将文本附加click到按时间分组的列下的记录数Count会更好,这样可以减少从数据库服务器传输的数据。

正如其他回答者已经意识到的那样,mysql_函数已被弃用,您应该使用mysqlipdo用于新代码。

于 2013-08-13T07:58:01.593 回答
0

像下面这样写你的查询

$id = 'site1';
$getclk = mysql_query("SELECT count(id) as clcount,time FROM clicks WHERE site='$id' group by time order by time");
$clk = mysql_num_rows($getclk);
print_r($clk);
于 2013-08-13T07:59:06.327 回答