Php 我希望在select_sum语句之前有一个where in语句

Php 我希望在select_sum语句之前有一个where in语句,php,sql,codeigniter,Php,Sql,Codeigniter,我希望在select_sum语句之前有一个where in语句。 因为我想根据$project得到不同的金额。现在,它只是将所有数组变量计算为一个和 我在codeigniter里做这个 型号: function rapport_detail_opbrengsten($idKlant){ $this->db->from('Project'); $this->db->join('Opbrengsten'

我希望在select_sum语句之前有一个where in语句。 因为我想根据$project得到不同的金额。现在,它只是将所有数组变量计算为一个和

我在codeigniter里做这个

型号:

 function rapport_detail_opbrengsten($idKlant){
                $this->db->from('Project');
                    $this->db->join('Opbrengsten', 'Opbrengsten.idProject = Project.idProject');
    if ($idKlant > 0){
            $this->db->where('idKlant', $idKlant);}
             $query = $this->db->get();
             $project = array();
                foreach($query->result() as $row){
                    $project[] = $row->idProject;
                }
                    $this->db->select_sum('Prijs'); 
                    $this->db->from('Opbrengsten');
                                $this->db->where_in('idProject', $project);

                     $query = $this->db->get();

            if($query->num_rows()>0){
                return $query->result();
             }
            else{
                 return false;
             }
         }

选择_sum
将所有行分组。。因此,如果按其他条件手动对行进行分组,则不会产生任何效果。试试这样的

$this->db->select('idProject, SUM(Prijs) as total'); 
$this->db->from('Opbrengsten');
$this->db->where_in('idProject', $project);
$this->db->group_by('idProject');
$query = $this->db->get();

你的意思是你想要一个
分组,这样你就可以得到每个项目的总和(Prijs)?是的,这正是我想要做到的。我得到不同的总和(prijs)。但我如何做到这一点呢?因为当我这样做时:$this->db->groupby(“idProject”);它不会做任何事。因此,我不知道分组方式是否正确。例如,$project的值为(6,7,8),但我希望每个值的select_总和不同。当我像你的例子那样做的时候,它仍然是加在一起的。你应该得到3行
ID
total
,你确定你将
select\u sum
更改为只
select
?是的,我更改了它,但是所有ID仍然具有所有ID的值。很抱歉,看不到问题,是否可以获取已执行的查询?。此外,函数的所有其他部分看起来都很可疑。。您在嵌套循环中多次重复使用
$this->db
,尝试稍微清理一下,然后用一个更简单的示例进行测试。