如何结合mysql的倍数和日期

时间:2015-07-31 01:38:01

标签: php mysql

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

这是我目前的代码:

ODataRoute

输出为$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; ,但我应该从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 =&#39 ; 2' GROUP BY日期(R.date)"); if(mysql_num_rows($ earnings_query)> 0) {

{"date": "12/31/1969", "value": },

}

echo $ chart_data;

2 个答案:

答案 0 :(得分:1)

您需要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);

答案 1 :(得分:0)

在您的SQL命令中添加GROUP BY日期。

db.main_table.main_field1.requires=IS_IN_DB(db, 'other_table.id',
                                            label=db.other_table._format, sort=True)

这将对范围中的每个日期求和,而您对所有日期求和,然后选择第一个日期。如果日期字段不仅仅是日期,还包括时间信息,那么您将要使用DATE(R.date)。