0

我想每天查看营业额摘要。

这是 mySQL 查询:

SELECT 
 o.date_purchased,
 round(ot.value,2)
FROM orders o
JOIN orders_total ot ON ot.orders_id = o.orders_id
WHERE o.date_purchased <=  '2012-05-12'
AND o.date_purchased >=  '2012-04-12'
AND ot.class =  'ot_total'

结果,我收到了 10 个带有购买日期的订单。但我也会得到没有营业额期间的天数,比如这个例子: 2012-04-12 0,00 2012-04-13 120,95 2012-04-14 0,00

格雷茨罗恩

4

2 回答 2

0

仅仅通过更改查询不可能做你想做的事,因为当它们根本不存在时,SQL 不会添加行。

两种可能的解决方案:

  • 显示结果时填补应用程序中的空白 - 推荐的解决方案。
  • 创建一个包含所有没有间隔的日期的附加表,并首先与表进行外部连接orders,尽管这样做通常没有意义。
于 2012-05-13T11:13:03.690 回答
0

试试这样

$todayDate = date("Y-m-d");
$today = strtotime($todayDate);
$nextmonth =  mktime(0, 0, 0, date("m")+1, date("d"), date("Y"));

然后在您的查询中使用此变量

SELECT 
 o.date_purchased,
 round(ot.value,2)
 FROM orders o
 JOIN orders_total ot ON ot.orders_id = o.orders_id
 WHERE o.date_purchased <=  $today
 AND o.date_purchased >=  $nextmonth
 AND ot.class =  'ot_total'

您也可以使用介于

SELECT 
 o.date_purchased,
 round(ot.value,2)
 FROM orders o
 JOIN orders_total ot ON ot.orders_id = o.orders_id
 WHERE ot.class =  'ot_total'
 AND o.date_purchased  BETWEEN $today AND $nextmonth 
于 2012-05-13T11:00:24.180 回答