下面的查询返回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_id
,member_group
,type_id
和portfolio_number
。
portfolio_number列的数字介于1和7之间。
我需要在数据库中查询具有相同portfolio_number(以及匹配类型和member_id)的3行,并为这三行中的每一行返回entry_id。
必须有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