我试图为图表生成数据,但每次我尝试这样做时,它基本上只给我 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/