Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 不存在左联接列时如何选择和_Php_Mysql_Codeigniter - Fatal编程技术网

Php 不存在左联接列时如何选择和

Php 不存在左联接列时如何选择和,php,mysql,codeigniter,Php,Mysql,Codeigniter,在上面的查询中,我将表b连接到b_PID上的表,但是表a中的所有记录并非都有表b中的记录,因此,如果我如上所述选择表b中的金额总和,则不会返回表b中没有数据的记录thas。如果表b中没有记录,如何选择“合计b.amount”和“返回金额”为0?由于某些原因,我无法使用group_by 提前谢谢。您应该使用合并 $this->db->select("a.*, SUM(b.amount) as total"); $this->db->join('table2 b', 'a.b

在上面的查询中,我将表b连接到b_PID上的表,但是表a中的所有记录并非都有表b中的记录,因此,如果我如上所述选择表b中的金额总和,则不会返回表b中没有数据的记录thas。如果表b中没有记录,如何选择“合计b.amount”和“返回金额”为0?由于某些原因,我无法使用group_by


提前谢谢。

您应该使用合并

$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();

$this->db->选择(“a.*,SUM(如果b.amount为空,则为1,否则为结束)作为总计”)

是的,我尝试过使用coalesce,但它仍然没有返回表BYU中没有数据的行。您似乎缺少GROUP BY子句。我在问题中明确指出,我不能使用GROUP_byI。我建议您解决这些“原因”,或者在应用程序代码中处理算术运算。
  SELECT d.*
  , IFNULL(SUM(a.total),0) AS total
  FROM ( SELECT * FROM table2 b) d
  LEFT JOIN table1 a
  a.b_PID = b.PID