php - 如何结合mysql中的倍数总和和日期

标签 php mysql

我试图为图表生成数据,但每次我尝试这样做时,它基本上只给我 1 个总和。对于图表,我需要日期和值。

这是我当前的代码:

$chart_data = "";
    $earnings_query = mysql_query("SELECT SUM(R.rate) as ratess,R.date FROM reports R WHERE R.pid = '$publisher_id' AND R.status = '2'");
    if (mysql_num_rows($earnings_query) > 0)
    {

        while ($row = mysql_fetch_array($earnings_query))
        {
            $date = date("m/d/Y",strtotime($row['date']));
            $chart_data.= '{"date": "'.$date.'", "value": '.$earnings_total['tot'].'},';
        }
    }

    echo $chart_data;

输出是 {"date": "12/31/1969", "value": }, 但我应该从 6 月 6 日一直获取每日数据。

感谢下面的所有评论,下面的代码解决了我的问题。

$earnings_query = mysql_query("SELECT SUM(R.rate) as ratess, R.date FROM reports R WHERE R.pid = '$publisher_id' AND R.status = '2' GROUP BY date(R.date) "); 如果 (mysql_num_rows($earnings_query) > 0) {

while ($row = mysql_fetch_array($earnings_query))
{
    $date = date("m/d/Y",strtotime($row['date']));
    $chart_data.= '{"date": "'.$date.'", "value": '.$row['ratess'].'},';
}

回显 $chart_data;

最佳答案

你需要一个 group by 子句:

SELECT SUM(R.rate) as ratess, R.date
FROM reports R
WHERE R.pid = '$publisher_id' AND R.status = '2'
GROUP BY R.date;

如果没有 group by,您的查询就是一个对整个数据集运行的聚合查询。结果(没有 group by)总是一行。

如果名为 date 的列有时间部分,那么您可能需要使用 date() 函数:

SELECT SUM(R.rate) as ratess, date(R.date) as date
FROM reports R
WHERE R.pid = '$publisher_id' AND R.status = '2'
GROUP BY date(R.date);

关于php - 如何结合mysql中的倍数总和和日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31736791/

相关文章:

php - 如何将数据刷新到浏览器但继续执行

php - 无法使用 SF2 将上传的文件保存到文件系统

mysql - 否定sql查询返回的整数

mysql - 每日电子邮件通知的 "saved search"功能的最佳数据结构是什么?

mysql - 统计MySQL中 "latest"连续计数

mysql - Codeigniter 中的 SQL 查询问题

javascript - 当浏览器自动填充数据时启用按钮

php - 为什么 mysqli_num_rows 总是返回 0?

php - 加在一起 ​​MySQL values 论坛专栏

php - MySQL - 根据关系表的值在最终输出中添加额外的列