【发布时间】:2014-08-12 23:20:09
【问题描述】:
我正在尝试创建一个查询以获取基于月份的最近 12 个月的记录以进行图表表示。经过大量阅读和观看此similar topic 之后,我创建了一个看似正确但缺少 0 钱月份的查询。例如,我在图表中看到月份 1/14、2/14、4/14 等等......缺少 3/14。
我的代码是这样的
SELECT *
FROM
(SELECT DATE_FORMAT(now(), '%m/%y') AS Month
UNION SELECT DATE_FORMAT(DATE_SUB(now(), INTERVAL 1 MONTH), '%m/%y')
UNION SELECT DATE_FORMAT(DATE_SUB(now(), INTERVAL 2 MONTH), '%m/%y')
UNION SELECT DATE_FORMAT(DATE_SUB(now(), INTERVAL 3 MONTH), '%m/%y')
UNION SELECT DATE_FORMAT(DATE_SUB(now(), INTERVAL 4 MONTH), '%m/%y')
UNION SELECT DATE_FORMAT(DATE_SUB(now(), INTERVAL 5 MONTH), '%m/%y')
UNION SELECT DATE_FORMAT(DATE_SUB(now(), INTERVAL 6 MONTH), '%m/%y')
UNION SELECT DATE_FORMAT(DATE_SUB(now(), INTERVAL 7 MONTH), '%m/%y')
UNION SELECT DATE_FORMAT(DATE_SUB(now(), INTERVAL 8 MONTH), '%m/%y')
UNION SELECT DATE_FORMAT(DATE_SUB(now(), INTERVAL 9 MONTH), '%m/%y')
UNION SELECT DATE_FORMAT(DATE_SUB(now(), INTERVAL 10 MONTH), '%m/%y')
UNION SELECT DATE_FORMAT(DATE_SUB(now(), INTERVAL 11 MONTH), '%m/%y')
) AS Months
LEFT JOIN
(SELECT sum(expenses.price) AS ExpenseAmount,
sum(payments.amount) AS PaymentsAmount,
DATE_FORMAT(expenses.date_occurred,'%m/%y') AS Month,
DATE_FORMAT(payments.date_occurred,'%m/%y') AS Montha
FROM expenses,
payments
WHERE payments.user_id= 1
AND payments.user_id=expenses.user_id
GROUP BY MONTH(payments.date_occurred),
YEAR(payments.date_occurred)
ORDER BY payments.date_occurred ASC ) data ON Months.MONTH = data.Montha
ORDER BY data.Montha;
任何帮助都会很棒,因为这种查询对我来说太高级了:-)
【问题讨论】:
-
单独运行时,内联视图的输出(您已别名为“数据”)是什么样的?除了缺少的月份之外,您得到的输出是否正确?
-
(示例)在图表的图片中,我应该得到 0 月 4/14。但是在结果查询中没有这样的东西,所以它被跳过了。查询正确,确实没有这个月的数据。但我想在那里有一个空值和月份。让我这样做@Brian DeMilia,我会把它发布给你
-
布莱恩这是一个 var_dump() laravel.io/bin/5We82