LEFT JOIN未显示NULL结果

时间:2014-01-31 02:59:45

标签: php mysql left-join isnull

我有两张桌子:

  • DAY_INTERVALS(interval_start)
  • ORDERS(client_id,order_time,order_total_price)

我希望在ORDERS表中显示DAY_INTERVAL表中的所有日期。下面是我正在使用的SQL。

SELECT DATE_FORMAT(order_time,'%Y-%m-%d') as dates, COALESCE(SUM(order_total_price), 0) AS  sales
FROM time_intervals ti 
LEFT  JOIN orders o 
ON DATE(o.order_time) = ti.interval_start  AND  (o.client_id = 157 or o.client_id is NULL)
GROUP BY DAY(o.order_time)

它不显示订单表中不存在的日期的NULL结果。无论是否在订单表中,查询都应显示所有日期。

我已经查看了类似的问题,但上面的查询是我根据其他解决方案提出的。

任何建议都会非常感激。

1 个答案:

答案 0 :(得分:0)

如果你摆脱AND (o.client_id = 157 or o.client_id is NULL),它会为你提供你正在寻找的数据集。

您正在从本文中有效地执行“Left Excluding JOIN”:

http://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins

唯一的区别是你是从ON子句而不是WHERE子句执行它。