【问题标题】:Count and display last 10 days data from SQL统计并显示来自 SQL 的最近 10 天数据
【发布时间】:2021-04-03 23:08:33
【问题描述】:

我正在尝试创建一个小型网站,其中有一个推荐系统。 我想显示用户最近 10 天的推荐计数。 每天都应该可以单独访问。 例如,如果今天是 1 月 10 日,则回显 $day[9];应显示数据库中日期为 1 月 10 日的总计数。 我想它会像下面这样

SELECT username,COUNT(*)FROM reftable GROUP BY day(date)

我能够获取表格中的数据,但我想以 $day[9] 的形式访问每一天;或$天[8];或 $day[7];

我该怎么做? 以下是迄今为止我能做的最好的事情,但我无法从中获取个别日期数据(如 $day[9]; 或 $day[8]; 或 $day[7];)。

$dbh = new PDO("mysql:host=$hostname;dbname=$db", $username, $password);

foreach($dbh->query('SELECT username,COUNT(*)
                    FROM reftable 
                    GROUP BY day(date)') as $row) {
    echo "<tr>";
    echo "<td>" . $row['COUNT(*)'] . "</td>";

【问题讨论】:

  • 用您正在使用的数据库标记您的问题。

标签: php sql count


【解决方案1】:

似乎您只是缺少一个 order by,这将确保您的行集以您期望的顺序显示:

SELECT username, COUNT(*) as theCount FROM reftable GROUP BY day(date) ORDER BY day(date)

或者您没有选择日期,因此前端可以进行排序/显示计数所指的实际日期:

SELECT day(date) as theDay, username, COUNT(*) as theCount FROM reftable GROUP BY day(date)

或两者兼有

SELECT day(date) as theDay, username, COUNT(*) as theCount FROM reftable GROUP BY day(date) ORDER BY 1

然后你可以例如

 echo "<td>" . $row['theDay'] . "</td>";
 echo "<td>" . $row['theCount'] . "</td>";

我很困惑为什么你没有 WHERE date &gt; NOW() - INTERVAL 10 DAYS 或类似的,用于提取过去 10 天的数据..

【讨论】:

  • 因为我只是在测试代码,所以我没有费心过滤 10 天的数据。你能告诉我关于如何选择每个数据的其余代码吗?我如何使用 $day[9]; ?
  • 我不是用$row['theDay'] 做的吗? (请注意,我不是 php 开发人员;我只是复制了你的模式,所以如果你错了.. 我错了!:D 但你写的似乎是明智的..)
  • 我不知道,我仍然无法使这个工作,让我尝试一些其他的可能。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-01
  • 2022-12-28
  • 2020-08-19
  • 1970-01-01
  • 2017-09-25
  • 2020-11-02
  • 2023-03-13
相关资源
最近更新 更多