如何在左连接列时选择总和不存在

时间:2017-05-17 04:57:32

标签: php mysql codeigniter

$this->db->select("a.*, SUM(b.amount) as total");
$this->db->join('table2 b', 'a.b_PID = b.PID', 'LEFT');
$this->db->from(table1 a');
$query = $this->db->get();
$result = $query->result();

在我上面的查询中,我将b表上的表连接到表b_PID,但是表a中的所有记录都没有记录在表b中,因此如果我在表b中选择SUM,如上所述,记录没有数据在表b中没有返回。如果表b中没有记录,如何选择总和b.amount和返回金额为0?出于某些原因,我不能使用group_by。

提前谢谢。

2 个答案:

答案 0 :(得分:2)

您应该使用 COALESCE

  SELECT d.*
  , IFNULL(SUM(a.total),0) AS total
  FROM ( SELECT * FROM table2 b) d
  LEFT JOIN table1 a
  a.b_PID = b.PID

答案 1 :(得分:1)

$ this-> db-> select(“a。*,SUM(当b.amount IS NULL,然后1 ELSE o END)为总数”);