PHP代码(相关)SQL PHP的混淆复杂
$分贝= '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
,但我想要的是得到0的结果,如果有n行的其他日期。
PHP代码(相关)SQL PHP的混淆复杂
$分贝= '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
,但我想要的是得到0的结果,如果有n行的其他日期。
你不能这样做(不是不加入包含所有日期的表,至少)。
显示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";
}
}
你能告诉如何做到这一点与PHP? im confused:S? – cute 2011-02-13 14:42:29
从你给你正在试图解决我猜你有什么问题的有限的信息正在努力寻找“免费预约”或类似。
如果是这样,那么这应该帮助你。 http://www.artfulsoftware.com/infotree/queries.php?&bw=1280#98
本网站有一些查询模式,这将有助于您的数据库思维和设计。
切线评论:没有日期2011-02-30。二月只有28天。 – 2011-02-13 14:42:14