活动记录 - 找到3个结果,但只返回一个

时间:2013-10-01 11:32:26

标签: sql codeigniter codeigniter-2

下面的查询返回3个结果可用,但它只返回一个条目ID。

我怎样才能返回三个entry_id?

$this->EE->db->select('entry_id, count(portfolio_number) AS results');
$this->EE->db->from('submissions');
$this->EE->db->where('type_id', '1'); 
$this->EE->db->where('member_group', $member_group); 
$this->EE->db->group_by('portfolio_number'); 
$this->EE->db->having('results = 3'); 
$query = $this->EE->db->get();
$submissions = $query->result_array();

print_r($submissions);

编辑:

我有一个表格列entry_idmember_grouptype_idportfolio_number

portfolio_number列的数字介于1和7之间。

我需要在数据库中查询具有相同portfolio_number(以及匹配类型和member_id)的3行,并为这三行中的每一行返回entry_id。

必须有3个结果,否则我不想显示它们。

3 个答案:

答案 0 :(得分:0)

您的$this->EE->db->group_by('portfolio_number');导致返回包含汇总数据的单行。

如果您还想要返回所有ID,可以尝试添加

$this->EE->db->select('GROUP_CONCAT(entry_id) AS entry_ids', false);

然后在PHP中拆分entry_ids字段:

str_getcsv($submissions);

编辑:我为select查询添加了第二个参数,以防止在自定义选择查询周围放置反引号。

答案 1 :(得分:0)

你可以像这样处理它

$results    =   $this->EE->db
                        ->select('entry_id')
                        ->from('submissions')
                        ->where('type_id', '1')
                        ->where('member_group', $member_group)
                        ->group_by('portfolio_number')
                        ->get()
                        ->result_array();

if(count($results)){
    return $results
}else {
    return false;
}

答案 2 :(得分:0)

请你替换这段代码

  

$这 - > EE-> DB-> GROUP_BY( 'portfolio_number'); //每个portfolio_number只会返回一行    $ this-> EE-> db-> group_by('portfolio_number,entry_id'); //每个portfolio_number和entry_id将返回一行

我认为它将返回3行不同的entry_id