2013-02-19 171 views
0

我有一個記錄數據庫與他們分享了時間戳。我想從數據庫中提取記錄,因此如果有其他記錄的日期相同(24小時),我希望將它們組合在一起。這可以通過MYSQL來完成,還是必須使用PHP將記錄拉到數組中?從MYSQL數據庫中選擇記錄按天分組

這裏是我的表的截圖:

enter image description here

這是到目前爲止我的模型功能:

public function getUsersMoves($options) { 
     $query = "SELECT * FROM myzone_user_hr_records"; 
     if(isset($options['GUID'])) { 
      $query .= " WHERE GUID = '" . $options['GUID'] . "'"; 
     } 
     if((isset($options['minHR'])) && isset($options['maxHR'])) { 
      $query .= " AND (hr BETWEEN '" . (int)$options['minHR'] . "' AND '" . (int)$options['maxHR'] . "')"; 
     } else if (isset($options['zone'])) { 
      $query .= " AND zone = '" . (int)$options['zone'] . "'"; 
     } 
     if(isset($options['activity'])) { 
      $query .= " AND title = '" . $options['activity'] . "'"; 
     } 

     $query .= " ORDER BY time DESC"; 

     $query = $this->db->query($query); 
     return $query->result_array(); 
    } 

我的控制器代碼:

$moves = $this->myzone_model->getUsersMoves($options); 

我想將數據排序,以便這些記錄在相同的情況下分組在一起例如(2012-11-20)。

感謝

+0

你面臨的問題是什麼? – 2013-02-19 15:40:12

+0

只有在select語句中使用某些聚合函數時,纔可以使用group by ...... – 2013-02-19 15:41:58

回答

4

試試這個:

SELECT *, DATE(time) AS date FROM [whatever you want] GROUP BY date 
+0

這就是我一直在尋找的感謝。 – devoncrazylegs 2013-02-19 16:18:42

1
select * from TABLE where `time` like '2012-11-20%' 

我建議的作品,因爲在WHERE LIKE條件的選擇從與2012-11-20開始時間字段所有日期的選項。這意味着無論白天幾點時間,它都會返回當天的所有結果。

爲了使這項工作,你必須記住使用像,然後添加通配符末 - %。如果需要,您還可以在開頭添加通配符。一個例子返回所有天(12月11日)多年將是:

SELECT * FROM TABLE WHERE `time` like '%-12-11%' 
+0

如果你解釋它會很好。 – wtsang02 2013-02-19 16:10:20

+0

@ wtsang02這裏沒有什麼可以解釋的。您只需查詢表格,並且使用通配符在TIME字段中存在WHERE條件。 LIKE部分意味着它不會逐字比較,它只比較第一部分(日/月/年組合),其餘部分可以是任何東西(因爲通配符)。因此,任何不同的時間(在同一天)仍然會返回。 如果您想了解更多信息,請查看: http://dev.mysql.com/doc/refman/5.0/zh-CN/string-comparison-functions.html – James 2013-02-19 16:11:41

+0

如果您鍵入系統,系統會自動標記爲低質量答案太少。向代碼添加一些解釋總是更好。 – wtsang02 2013-02-19 16:15:53