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;

しかし、それはまったく良くないと思います。適切な方法を提案してもらえますか?

4

2 に答える 2

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;
}
于 2012-08-13T13:55:01.060 に答える
2

結果を自分でグループ化するだけです。

$res = $this->db->query("SELECT count(1) AS games,own FROM ownership WHERE user = ? GROUP BY own", array($user))->result_array();
于 2012-08-13T13:05:18.397 に答える