Php 打印不带';表中不存在吗?
我有一个按日期分组的行求和的查询。基本上,它计算每天有多少会员申请,并逐日打印结果。当然,如果一天内没有申请,它不会显示第15行和第17行下面的示例中没有申请Php 打印不带';表中不存在吗?,php,mysql,group-by,Php,Mysql,Group By,我有一个按日期分组的行求和的查询。基本上,它计算每天有多少会员申请,并逐日打印结果。当然,如果一天内没有申请,它不会显示第15行和第17行下面的示例中没有申请 Date | Applications ----------------------------------- 12/01/2010 | 44 13/01/2010 | 73 14/01/2010 | 66 16/01/2010 | 102 18/01/2010 | 12 19
Date | Applications
-----------------------------------
12/01/2010 | 44
13/01/2010 | 73
14/01/2010 | 66
16/01/2010 | 102
18/01/2010 | 12
19/01/2010 | 22
我需要它打印出没有申请的日期和0,这样就不会跳过任何日期。你知道怎么做吗?我曾想过在一年中的每一天加入一个表,但这似乎有些过分
查询如下
SELECT
application_date AS Date,
COUNT(*) AS Applications
FROM members
GROUP BY ap_date
选择有问题的日期范围。然后遍历该日期范围,查看当前行是否匹配。如果不匹配,则输出0。如果匹配,则输出适当的数字并前进到下一行。这与非常相似。普遍的共识似乎是:
最好的选择是#1-它是最不复杂的,应该有最低的开销。我会创建一个PHP数组,数组索引将是一个字符串,日期,我更喜欢这种格式yyy-MM-DD,我会这样做(注意键的日期格式很重要)
//过去还有多远
过去的$days\u=365;
//默认为今天的unix时间戳文件
$start_day=时间();
//包含所有过期日期的数组
$dates=array();
//秒*分钟*小时
$secs_in_a_day=60*60*24;
//注意,我们在这里向后走
对于($i=0;$i只为列出一年中的所有日期创建一个表并不过分;它被称为a,可以使这个查询(以及很多类似的查询)非常简单。我用PHP做这件事,但不太确定如何迭代结果(例如,使用光标)如果使用不需要进一步处理的基于集合(即一次性)的查询,SQL和关系数据库通常工作得更好。
// how far in the past to go
$days_in_the_past = 365;
// default to today, unix timestamp file
$start_day = time();
// the array that contains all out dates
$dates = array();
// sec * min * hours
$secs_in_a_day = 60 * 60 * 24;
// note we're going backwards here
for ( $i=0; $i <= $days_in_the_past; $i++ )
{
$key = date('Y-M-D', ($start_day - ($secs_in_a_day * $i)));
// this sets the format of 2010-01-21 as the key
$dates[$key] = "";
}
$query = 'SELECT date, app FROM table';
$result = mysql_query($query);
while ( $row = mysql_fetch_assoc($result) )
{
$key = date('Y-M-D', strtotime($row['Date']));
$dates[] = $row['Applications'];
}