【发布时间】:2012-04-08 13:20:33
【问题描述】:
我有一个要更改的查询,以便它为我提供当前 52 周的计数。此查询使用我制作的日历表,其中包含固定范围内的日期列表。目前的查询是选择最大和最小日期,而不一定是过去 52 周。
我想知道如何使我的日历表保持最新状态,以便我可以获得过去 52 周(即从现在到一年前)的信息。还是有另一种方法可以使查询独立于使用日历表?
这是查询:
SELECT calendar.datefield AS date, IFNULL(SUM(purchaseyesno),0) AS item_sales
FROM items_purchased join items on items_purchased.item_id=items.item_id
RIGHT JOIN calendar ON (DATE(items_purchased.purchase_date) = calendar.datefield)
WHERE (calendar.datefield BETWEEN (SELECT MIN(DATE(purchase_date))
FROM items_purchased) AND (SELECT MAX(DATE(purchase_date)) FROM items_purchased))
GROUP BY week(date)
想法?
【问题讨论】:
-
为什么你有一个日历表而不只是在该表中使用 DATE 或 DATETIME 列?
-
@Ryan Kempt,这可能确实是 OP 所要求的。此外,当您需要一系列日期时,日期函数也没有那么有用。
-
当您必须为每个时期都有一个 bin 并且可能没有任何特定 bin 的数据时,使用日历表。
-
嗨 Ryan,日历表是在没有购买的给定日期生成 0 的商品销售额,否则查询结果仅限于有商品销售的日期。我的最终用途是绘制结果图,因此具有所有个日期而不只是具有非零值的日期很重要,感谢 Jim 和 Jason 帮助 Clarify!