2016-01-08 53 views
1

我有一个MySQL表如下 -PHP从MySQL表获取数据,如Twitter趋势

crId ccId ccatId entryDate 
458  186  12  2016-01-01 
459  186  37  2016-01-01 
460  186  117  2016-01-01 
461  187  12  2016-01-04 
462  187  117  2016-01-05 
463  187  117  2016-01-07 
464  187  12  2016-01-07 

现在,我想从这个表像Twitter这样的趋势的一部分获取数据。

  • 根据降序
  • 计数从表获取从表中的所有数据最后1周的时间内
  • 显示前5项并显示多少ccatId每个条目。例如,在表中,117有3个条目,12有3个条目等。

我该如何做到这一点?我找不到解决方案?任何人都可以帮我吗?

预计Outcomes-

12 
3 times 

117 
3 times 

12 
2 times 
+1

comes..Have你试过什么问题? –

+0

是的......我只是简单地提取2个日期范围内的数据而感到厌倦。但之后,无法找到解决方案如何做... mysql_query(“SELECT count(ccatId)FROM conferencerelation WHERE entryDate BETWEEN'$ previous_week'AND'$ nowTime'GROUP BY ccatId”); – tisuchi

+0

你使用的逻辑有什么问题 –

回答

0

普莱舍下面的检查查询:

SELECT ccatId, count(ccatId) AS count FROM `tablename` WHERE `entryDate` > DATE_SUB(NOW() , INTERVAL 1 WEEK) GROUP BY ccatId ORDER BY count DESC 

这回这样的事情,

+--------+-------+ 
| ccatId | count| 
+--------+-------+ 
| 12 | 2 | 
| 117 | 2 | 
+--------+-------+ 
+0

按照降序显示排名前5的条目,使用LIMIT如限制0,5 –

+0

谢谢..其显示正是我正在寻找的内容。 – tisuchi

1

尝试此查询:

SELECT ccatId, count(ccatId) AS rank FROM `table_name` GROUP By ccatId ORDER BY rank DESC; 

它返回这样的事情,

+--------+-------+ 
| ccatId | rank | 
+--------+-------+ 
| 12 | 3 | 
| 117 | 3 | 
| 37 | 1 | 
+--------+-------+ 

如果你想从上周的条目才刚刚放WHERE子句。

+0

很好..它根据数据的最高顺序完美地显示数据。现在,如果我想要显示每个数据插入的次数,该如何操作? – tisuchi

+0

@tisuchi让我看看你之前做的预期结果。 –