I need this for charting purposes. Basically i have to:
- Select all sent SMS by date without time part, getting an array with dates/counts pairs day-by-day;
- Add “fake” rows for days without any record in my table, that is filling all dates “gaps” with zeroes.
An example result and corresponding table (here simplified) would be:
array(
'2012-05-26 00:00:00' => 1,
'2012-05-27 00:00:00' => 0, // Fake added row
'2012-05-28 00:00:00' => 2,
)
+----------------+----------------------+
| Table SMS | id | sent_at |
+----------------+----------------------+
| | 1 | 2012-05-26 21:58:41 |
+----------------+----------------------+
| | 2 | 2012-05-28 22:19:21 |
+----------------+----------------------+
| | 3 | 2012-05-28 02:19:21 |
+----------------+----------------------+
Is there any SQL command for doing this or should i do manually playing with PHP arrays?
You can use a UNION Statement
Edited
I suggested creating a special table to join against.
Creation of a datetable for querying
Now populate this table with all date values within the ranges you are querying. You can easily join to this table with any valid date. Allowing you to aggregate for Dates that do and do not exist.