我有一个类似的表点击
+-----+-----+-------+-------+
| 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命令适用于此,但我不知道如何做到这一点。
请帮帮我,我不知道怎么做,请给我完整的代码来做这件事。
我认为应该是:
SELECT COUNT (id) as countClicks, time as Date
FROM clicks
[WHERE site = ?]
GROUP BY time
ORDER BY countClicks DESC
此外,您不应该使用mysql_*函数,因为它们已被弃用。
$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.
很抱歉,这不是的合适论坛
SELECT time, COUNT(*) as count FROM clicks GROUP BY time
这应该会以您要求的格式给出结果:
$getclk = mysql_query("select time as Date, concat(count(*), ' click') as Count
from Clicks
where site = '$id'
group by time
order by Count desc");
请注意,使用mysql函数concat()
函数将click
文本附加到Count
列下按时间分组的记录数中会更好,如果您将该文本附加在php中而不是mysql中,这样从数据库服务器传输的数据就会更少。
正如其他回答者已经意识到的那样,mysql_
函数是不推荐使用的,对于新代码,应该使用mysqli
或pdo
。
像下面的一样编写您的查询
$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);