【发布时间】:2019-09-10 13:45:43
【问题描述】:
在这里,我想将这两个查询结果合并为一个结果 第一个查询看起来像这样
$this->db->select('bills.date as d_date,bill_details.agent_name,
SUM(bill_details.profit) AS total_profit');
$this->db->join('bill_details', 'bill_details.bill_id=bills.id','left');
$this->db->where('DATE(bills.date) >=', $start_date);
$this->db->where('DATE(bills.date) <=', $end_date);
$this->db->group_by('Date(bills.date)');
$this->db->group_by('bills.customerid');
$query1 = $this->db->get('bills')->result();
return $query1;
结果是这样的
Name Date Purchase
Ned 2019-07-26 210.60
第二个查询如下所示
$this->db->select('assigned_result.date,assigned_result.user_id,SUM(assigned_result.total_price) AS t_price,SUM(assigned_result.total_dc) AS t_dc');
$this->db->where('DATE(assigned_result.date) >=', $start_date);
$this->db->where('DATE(assigned_result.date) <=', $end_date);
$this->db->group_by('assigned_result.user_id');
$query2 = $this->db->get('assigned_result')->result();
第二个查询结果是这样的
Name Date winning
Ned 2019-07-26 120
现在我想像这样组合查询
Name Date Purchase winning
Ned 2019-07-26 210.60 120
为了得到这个结果,我加入了查询并像这样返回
$this->db->select('bills.date as d_date,bill_details.agent_name,
SUM(bill_details.profit) AS total_profit,SUM(assigned_result.total_price) AS t_price,SUM(assigned_result.total_dc) AS t_dc');
$this->db->join('bill_details', 'bill_details.bill_id=bills.id','left');
$this->db->join('assigned_result', 'bills.id=assigned_result.bill_no', 'left');
$this->db->where('DATE(bills.date) >=', $start_date);
$this->db->where('DATE(bills.date) <=', $end_date);
$this->db->group_by('Date(bills.date)');
$this->db->group_by('bills.customerid');
$query1 = $this->db->get('bills')->result();
return $query1;
但我得到这样的结果
Name Date Purchase winning
Ned 2019-07-26 226 160
purchase amount 搞错了。
【问题讨论】:
-
问题是assigned_result表的加入。加入时会在 total_profit 中获得额外的价值
-
任何人的想法
-
第一次sql查询好像出错了,这里
$this->db->join('bills', 'bill_details.bill_id=bills.id','left');。否则,我可以帮助您完成最后一个查询。 -
@AksenP 还是一样...
-
@AksenP 我已经尝试了很多,但仍然没有得到
标签: php mysql join codeigniter-3