将每日表记录合并到“上周”页面

时间:2013-02-02 15:44:17

标签: mysql date count

如果之前有人问过我,我很抱歉。我很擅长开发,虽然我经常尝试搜索,但我不确定要寻找什么。

无论如何,我有一张表来计算每天输入的记录。它看起来像这样(每个记录用一个字母表示)(假设今天的日期是2013年1月27日):

RECORD | COUNT | DATE 
------A-----|-----4-----|27/01/2013  
------B-----|-----7-----|27/01/2013
------B-----|-----3-----|24/01/2013
------C-----|-----8-----|22/01/2013 
------A-----|-----2-----|19/01/2013   

在表格中检查每个新帖子,如果该记录在当天已经存在,它会更新计数,否则会创建新记录。

对于打印已添加“TODAY”的记录的页面,我有MySQL查询

SELECT * FROM `table` ORDER BY `date` DESC, `count` DESC LIMIT 1000

并使用php'if'语句仅打印表中日期('Y-m-d')= date的记录。因此,只打印那天输入的记录和相应的计数。 - 上面的表格会产生结果:

1. B 7 
2. A 4

我想要的是打印上周输入的记录的页面。我知道我可以使用DATE_SUB(now(),INTERVAL 1 WEEK) AND NOW()来打印上周的记录,但我需要复制要合并的记录并将计数加在一起..所以这个表的结果如下所示:

1. B 10
2. C 8 
3. A 4

我如何组合这些重复记录并列出按计数排序的记录?这是获得“上周”记录计数的最佳方法,还是有另一种更好的表结构?

我很抱歉,如果这是一个愚蠢的问题,或者我的解释是啰嗦,但只是一些简单的指针将非常感激。

2 个答案:

答案 0 :(得分:0)

使用GROUP BY可以将相关记录分组在一起

SELECT `record`
     , SUM(`count`) AS `count`
FROM `table` 
WHERE `date` > `date` - INTERVAL 1 WEEK
GROUP BY `record`
ORDER BY `count` DESC 
LIMIT 1000

答案 1 :(得分:0)

试试这个

SELECT `record`, SUM(`count`) AS `count` 
  FROM `table` 
 WHERE `date` > DATE_SUB(CURDATE(),INTERVAL 1 WEEK)
 GROUP BY `record`
 ORDER BY `count` DESC 

如果需要,您可以LIMIT 1000分组结果集