2016-01-08 82 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讓我看看你之前做的預期結果。 –