有一个sql查询,显示特定日期在数据库中创建的行数(我按日期创建直方图)。
$timemoscow = date("d.m.Y", time());
$todaycount = mysqli_query($link, "select count(*) FROM logs WHERE time LIKE '%".$timemoscow."%'") or die(mysqli_error($link));
$todaycountres = mysqli_fetch_row($todaycount);
直方图脚本如下。
$('#sparklinedash').sparkline([4, 5, 2, 4, 3, 6, 7], {
type: 'bar',
height: '30',
barWidth: '4',
resize: true,
barSpacing: '5',
barColor: '#7ace4c'
});
直方图中的条带为7个。即7天。 我试图从数据库中推导出昨天,前天等等的天数。 但是,如果按照我的想法去做,我的代码将会看起来很棒。
$oneDay = date ("d.m.Y", strtotime ($timemoscow ."-1 days"));
$oneDaycount = mysqli_query($link, "select count(*) FROM logs WHERE time LIKE '%".$oneDay."%'") or die(mysqli_error($link));
$oneDaycountres = mysqli_fetch_row($oneDaycount);
$secondDay = date ("d.m.Y", strtotime ($timemoscow ."-2 days")); //and another days...
以Js为单位的近似输出:
$('#sparklinedash').sparkline([7, 6, 5, 4, 3, <?php echo $secondDaycountres[0]; ?>, <?php echo $oneDaycountres[0]; ?>], {
type: 'bar',
height: '30',
barWidth: '4',
resize: true,
barSpacing: '5',
barColor: '#7ace4c'
});
会有太多的请求,因为这种直方图为7天三段。如何才能更合理,更紧凑地做到这一点?
预先感谢您的合作。
答案 0 :(得分:0)
您需要使用聚合。
类似
select time, count(*) from logs group by time
这将为您提供多个行,每个行的时间和具有相同值的行数。
请参阅https://dev.mysql.com/doc/refman/8.0/en/group-by-functions.html#function_count
答案 1 :(得分:0)
您必须按DATE分组
select DATE(time), count(*) FROM logs GROUP BY DATE(time)
答案 2 :(得分:0)
addSuppressed
这很好。谢谢。