我正在尝试使用Google Charts API为过去6个月内用户的帖子数创建图表。 我的表结构是这样的 -
-> Userid - varchar(20)
-> Post_year - varchar(4)
-> Post_month - varchar(2)
要获得用户过去6个月的帖子数量,我的查询就像这样...
SELECT COUNT(*) AS count, `Post_year`, `Post_month`
FROM (`table`)
WHERE `Userid` = '1234'
AND `Post_year` >= '$year_offset'
AND `Post_month` >= '$month_offset'
GROUP BY `Post_year`, `Post_month`
如您所见,我只存储过年和月,然后使用偏移变量来获取帖子。这就像...
案例1:如果当前年份和月份是2010/12年度,那么抵消的是2010/7年度 案例2:如果当前年份和月份是2011/1,则抵消的是2010/8
现在,案例1中的查询工作正常。
// Get all posts by a user
// ...
WHERE Post_year >= 2010
AND Post_month >= 7
但是在案例2的情况下,它没有。由于查询的最后部分变为......
// Get all posts by a user
// ...
WHERE Post_year >= 2010
AND Post_month >= 8
因此,2010/1的帖子不满足条件Post_month >= 8
。
如何更改我的查询以便在案例2中工作。
此致
答案 0 :(得分:1)
您可以执行类似
的操作AND `Post_year` * 100 + `Post_month` >= $year_offset * 100 + $month_offset
但正确的方法是引入Post_date
字段并在查询中使用它。
答案 1 :(得分:0)
SELECT
COUNT(*) AS count,
`Post_year`,
`Post_month`
FROM (`table`)
WHERE `Userid` = '1234'
AND `Post_year` >= '$year_offset'
AND `Post_month` >= '$month_offset'
UNION ALL
SELECT
COUNT(*) AS count,
`Post_year`,
`Post_month`
FROM (`table`)
WHERE `Userid` = '1234'
AND `Post_year` = YEAR(CURRENT_TIMESTAMP)
AND `Post_month` <= '$month_offset'
GROUP BY `Post_year`, `Post_month`