【发布时间】:2013-12-11 09:09:27
【问题描述】:
我正在尝试根据本教程Using MySQL to generate daily sales reports with filled gaps 为特定用户生成每日销售报告。 为此,我有三个表,记录表、用户表和日历表
records user calendar
id id datefield
user_id
timestamp
当某一天的数据不可用时,下面的查询返回 0 作为总数,返回 NULL 作为 user_id,这很好:
SELECT calendar.datefield AS DATE,
IFNULL(COUNT(records.id),0) AS total, records.user_id
FROM records
RIGHT JOIN calendar ON (DATE(records.timestamp) = calendar.datefield)
WHERE (
calendar.datefield BETWEEN (NOW() - INTERVAL 14 DAY) AND NOW()
)
GROUP BY DATE DESC
我们的想法是为特定用户生成此报告,因此我将上述查询修改为以下内容:
SELECT calendar.datefield AS DATE,
IFNULL(COUNT(records.id),0) AS total, records.user_id
FROM records
RIGHT JOIN calendar ON (DATE(records.timestamp) = calendar.datefield)
WHERE (
calendar.datefield BETWEEN (NOW() - INTERVAL 14 DAY) AND NOW()
AND records.user_id = SOME_EXISTING_USER_ID
)
GROUP BY DATE DESC
当没有记录时返回一个空结果,但其想法是为没有数据的任何特定日期返回 0。
如何修改第一个查询以适用于特定用户?
【问题讨论】:
标签: mysql