sql php混淆复合体
PHP代码(相关) $db='2011-02-28'$a=‘2011-02-01’ 这是查询的一部分sql php混淆复合体,php,sql,date,Php,Sql,Date,PHP代码(相关) $db='2011-02-28'$a=‘2011-02-01’ 这是查询的一部分 LEFT JOIN abc ON abc.date between '$a' and '$db' 此查询显示以下结果: 1 2011-02-08 6 2011-02-09 6 2011-02-11 1 2011-02-13 但我想要的是,如果其他日期有n行,则结果为0。您不能这样做(至少在不加入包含所有日期的表的情况下) 为没有数据的日期显示0
LEFT JOIN
abc
ON
abc.date between '$a' and '$db'
此查询显示以下结果:
1 2011-02-08
6 2011-02-09
6 2011-02-11
1 2011-02-13
但我想要的是,如果其他日期有n行,则结果为0。您不能这样做(至少在不加入包含所有日期的表的情况下)
为没有数据的日期显示0是应用程序的工作,而不是数据库。这很简单,只需编写一个从开始日期到结束日期的循环,并为结果集中没有行的日期输出0
SQL的任务是告诉您哪些数据存在,而不是哪些数据不存在
while ($row = mysql_fetch_array($result)) {
$results[$row['date']] = $row['count'];
}
for ($time = strtotime('2011-02-01'); $time <= strtotime('2011-02-28'); $time += 86400) {
$datestr = date('Y-m-d', $time);
if (isset($results[$datestr])) {
echo "Count for date $datestr: " . $results[$datestr];
} else {
echo "Count for date $datestr: 0";
}
}
while($row=mysql\u fetch\u array($result)){
$results[$row['date']=$row['count'];
}
对于($time=strotime('2011-02-01');$time从您提供的关于您试图解决的问题的有限信息来看,我猜您是在尝试寻找“免费约会”或类似的服务
如果是这样的话,这应该会帮助你
此网站有许多查询模式,可以帮助您思考和设计数据库。切题注释:没有日期2011-02-30。二月只有28天。从开始日期到结束日期的循环,每隔一天递增:for($date=strottime('2011-02-01'));$date我在答案中添加了一个更大的示例。我尝试删除$datestr=date('Y-m-d',$time),但它当时没有显示任何数据?echo
是生成输出的PHP命令。这是修改输出的内容。但是这$datestr=date('Y-m-d',$time)是必需的吗?