我有一个像这样的表格点击
+-----+-----+-------+-------+
| 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命令适用于此但我不知道如何执行此操作。
请帮助我,我不知道该怎么做,请给我完整的代码来做到这一点。
答案 0 :(得分:1)
我认为应该是:
SELECT COUNT (id) as countClicks, time as Date
FROM clicks
[WHERE site = ?]
GROUP BY time
ORDER BY countClicks DESC
此外,您不应使用mysql_ *函数,因为它们已被弃用。
答案 1 :(得分: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.
很抱歉,不是正确的论坛
答案 2 :(得分:0)
SELECT time, COUNT(*) as count FROM clicks GROUP BY time
答案 3 :(得分: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");
请注意,使用mysql函数concat()
函数将click
文本附加到按Count
列下的时间分组的记录数中会更好,如果您在php中添加此文本而不是mysql,以便从数据库服务器传输更少的数据。
正如其他回答者已经意识到的那样,mysql_
函数已被弃用,您应该使用mysqli
或pdo
作为新代码。
答案 4 :(得分: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);