如何使用codeigniter获取包含group的所有行

时间:2014-01-04 09:43:26

标签: sql codeigniter

我有一张表来管理视频列表的投票,我需要获得单个条目的投票数。

这是我的表:

id | user_id | entry_id | vote

这是一个条目示例:

1  |    1  |    729  |  3  
2  |    2  |    729  |  4  
3  |    3  |    729  |  4  
4  |    4  |    729  |  1  
5  |    5  |    729  |  4

我需要知道有多少用户投票1,3和4以及投票该用户的总用户数。

在这种情况下,我应该得到:

Users that voted 1: 1  
Users that voted 3: 1  
Users that voted 4: 3  
Total user: 5

在这种情况下,我可以使用php创建百分比。

这就是我对活动记录所做的事情:

$this->db->select('COUNT(*) as tot_users, vote', FALSE);
$this->db->from('voti_video');
$this->db->where('entry_id', $id_entry);
$this->db->group_by('vote');

通过这段代码,我得到了用户投票的确切内容和投票数量 如何在不进行新查询的情况下获取用户总数? 可能吗?

3 个答案:

答案 0 :(得分:1)

我使用了这段代码。

$this->db->select( 'NAME' );
$this->db->select_sum( 'COUNTER' );
$this->db->from( 'TABLE' );
$this->db->order_by( 'NAME', 'ASC');
$this->db->group_by( 'NAME' );
$this->db->limit( 5 );
$result = $this->db->get();
return ( $result->num_rows() > 0 ? $result->result_array() : false );

答案 1 :(得分:0)

您需要在选择列表中有一个子查询,为您提供总行数

$this->db->select('count(*)'); 
$this->db->from('voti_video');

// Render the subquery to a string 
$subQuery = $this->db->compileselect();

// Reset active record 
$this->db->resetselect();

// Generate the main query as posted by you and include the subquery 

$this->db->select('COUNT(*) as tot_users, vote', FALSE);
$this->db->select("($subQuery) as TotalVotes");
$this->db->from('voti_video');
$this->db->where('entry_id', $id_entry);
$this->db->group_by('vote');

答案 2 :(得分:0)

请尝试与此相似的内容

$query = $this->db->query("
            select count(*) total,
                sum(case when entry_id = '".$id_entry."' then 1 else 0 end) tot_users,
            from voti_video
            group by vote");
来自herehere

想法<罢工>被盗。