Php Mysql查询需要优化和更新

Php Mysql查询需要优化和更新,php,mysql,codeigniter,Php,Mysql,Codeigniter,这是我的Codeigniter查询 $this->db->select('o.*,seo.price as seo_price,SUM(domain.price) as domain_price,SUM(bes.price) as bes_price, SUM(op.price) as payment_price'); $this->db->from('order as o'); $this->db->join("order_package_

这是我的Codeigniter查询

 $this->db->select('o.*,seo.price as seo_price,SUM(domain.price) as domain_price,SUM(bes.price) as bes_price, SUM(op.price) as payment_price');
    $this->db->from('order as o');
    $this->db->join("order_package_seo as seo", "seo.order_id = o.id", "left");
    $this->db->join("order_package_domain as domain", "domain.order_id = o.id", "left");
    $this->db->join("order_package_bespoke as bes", "bes.order_id = o.id", "left");
    $this->db->join("order_payment as op", "op.order_id = o.id", "left"); 
    $this->db->where("o.id" , $id);
    $query = $this->db->get();
    return $query->row();
我在“order\u package\u beskope”表中有3条记录,在其他所有表中有1条记录 我想通过订单id从所有表中获取价格
我是否需要使用“组”_bydistinct或任何其他方法,需要您的建议。

更改第一个语句,如下所示

$this->db->select('o.*,seo.price as seo_price,domain.price ,SUM(bes.price) as bes_price, op.price as payment_price');
$this->db->from('order as o');
$this->db->join("order_package_seo as seo", "seo.order_id = o.id", "left");
$this->db->join("order_package_domain as domain", "domain.order_id = o.id", "left");
$this->db->join("order_package_bespoke as bes", "bes.order_id = o.id", "left");
$this->db->join("order_payment as op", "op.order_id = o.id", "left"); 
$this->db->where("o.id" , $id);
$this->db->group_by("o.id");
$query = $this->db->get();
return $query->row();
因为您提到表“order\u package\u beskope”有3条记录,所以只有表字段“bes\u price”需要总和。所有其他表只有一条记录,因此如果加上SUM,它将乘以3(订单\包装\定制记录的数量)


因此,请删除“按o.id选择并添加分组”中其他表字段中的总和。好,那么它返回的是什么。它返回的是所有价格乘以3。i、 e域名的价格是123,但它的回报是369。如果你能帮助我,我可以解释更多。。嗨@IrfanAli,英语中没有像:update这样的词。我已经改正了。检查此项:您是否已尝试添加
$this->db->group_by(“o.id”)
$this->db->where(“o.id”,$id)之后