【问题标题】:Active record - 3 results found, but only one being returned活动记录 - 找到 3 个结果,但只返回一个
【发布时间】:2013-10-01 11:32:26
【问题描述】:

下面的查询返回 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 之间。

我需要在数据库中查询具有相同投资组合编号(以及匹配类型和成员 ID)的 3 行,并返回这三行中每一行的 entry_id。

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

【问题讨论】:

  • 导致结果正好有 3.. echo $this->db->last_query();
  • member_id 与投资组合编号有何关系?你能给出一个样本表/秒+样本输出吗?

标签: sql codeigniter codeigniter-2


【解决方案1】:

你可以这样处理

$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】:

    您的$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);
    

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

    【讨论】:

      【解决方案3】:

      能否请您替换此代码

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-01-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多