0
因此,我有一个表格,其中包含一组订购商品,订购商品表格记录特定订单中包含的特定商品的数量。以下是该示例中使用的表格的简化版本。MySQL显示总和0
订单项目表
order_item_id : int
order_item_item_id : int
order_item_quantity : int
order_item_order_id : int
Order表
order_id : int
order_date : date
我试图执行一个查询,将平均特定order_item_item_id的销售上,每周,每月和所有的时间基础。
目前我的查询如下
SELECT totalAvg.item
ROUND(AVG(totalAvg.total)+0.4999999, 0) AS totalAverage,
ROUND(AVG(monthAvg.total)+0.4999999, 0) AS monthAverage,
ROUND(AVG(weekAvg.total)+0.4999999, 0) AS weekAverage from
(SELECT orderitem.order_item_item_id AS item, SUM(orderitem.order_item_quantity) AS total,
DATE(`order`.order_date) AS date FROM orderitem, `order` WHERE orderitem.order_item_order_id =
`order`.order_id GROUP BY DATE(`order`.order_date), order_item_item_id) AS totalAvg,
(SELECT orderitem.order_item_item_id AS item, SUM(orderitem.order_item_quantity) AS total,
DATE(`order`.order_date) AS date FROM orderitem, `order` WHERE orderitem.order_item_order_id =
`order`.order_id AND `order`.order_date > date_sub(now(), interval 1 week) GROUP BY
DATE(`order`.order_date), order_item_item_id) AS weekAvg,
(SELECT orderitem.order_item_item_id AS item, SUM(orderitem.order_item_quantity) AS total,
DATE(`order`.order_date) AS date FROM orderitem, `order` WHERE orderitem.order_item_order_id =
`order`.order_id AND `order`.order_date > date_sub(now(), interval 1 month) GROUP BY
DATE(`order`.order_date), order_item_item_id) AS monthAvg,
WHERE totalAvg.item = monthAvg.item AND
monthAvg.item = weekAvg.item
GROUP BY item
这样做的问题是,如果一个项目没有在weekAvg表存在,那么没有结果打印出来totalAvg或monthAvg。我怎么能在一个陈述中做这件事?
的样本数据
{order_id : 5, order_date : 02/02/2013}
{order_id : 6, order_date : 13/03/2013}
{order_item_id : 1, order_item_order_id : 5, order_item_item_id : 1, order_item_quantity : 3}
{order_item_id : 2, order_item_order_id : 6, order_item_item_id : 1, order_item_quantity : 4}
电流输出将返回,因为每周的报告没有什么不具备的订单项ID为1.我试图解决这个问题的条目,从而它将woudl输出下面
totalAverage = 3.5
monthAverage = 4
weekAverage = 0
的值被计算如下:
总平均=总NUM销售特定商品的销售额除以销售商品的天数。
月份和星期值与先前的计算值相同,但具有时间限制,因此订单必须放置在最后一周/月内。
非常感谢,我现在试试这个。 – 2013-03-28 21:13:33
我觉得我很困惑,可能是因为我去了一个臃肿(尽管减少)的例子。现在我试图把它放到实际的版本中,并试图弄清楚你已经做了什么,但是不能让它起作用。你能否展示一个Coallese,内连接和左外连接的例子,同时解释它的作用/工作原理?我为了我的生活无法解决这个问题,至少可以说是令人沮丧:P – 2013-03-28 21:37:01