2012-08-13 95 views
3

計數特定行我已經在數據庫中的表:笨並從數據庫

id  | int(25) Auto Increment 
game | int(10) 
user | int(9) 
own  | int(11) 
userrate| int(2) 
time | datetime  

我現在想要的是與所有的own類型計算行。我知道這很難理解,所以我會後一個例子:

- own: 1; count: 5; 
- own: 2; count: 3; 
- own: 4; count: 10; 

我最初的想法是爲每個own創建不同的查詢(因爲它只有4),這樣:

$this->db->where('user',$user); 
    $this->db->from('ownership'); 
    $this->db->where('own','1'); 

    $whole = $this->db->count_all_results(); 

    return $whole; 

但我認爲這並不好。你能以適當的方式建議我嗎?

+0

你正在尋找的函數被調用GROUP_BY()。 – Tim 2012-08-13 12:39:11

+0

我用'group_by'試過,但它不是我想要的。比方說,一個用戶在表中有兩個'own = 3'遊戲,'group_by'只有其中一個。 – 2012-08-13 13:09:49

回答

2

我解決了這個問題。它類似於@ vearutop的解決方案,但它返回一個數組own - count

這裏的模型:

public function countRates($user) { 
    $this->db->select('own, COUNT(own) as count'); 
    $this->db->where('user',$user); 
    $this->db->from('ownership'); 
    $this->db->group_by('own'); 

    $q = $this->db->get(); 
    $q = $q->result_array(); 

    return $q; 
} 
2

通過自身只是一羣結果:

$res = $this->db->query("SELECT count(1) AS games,own FROM ownership WHERE user = ? GROUP BY own", array($user))->result_array();