我在使用CI的代码时遇到问题,尤其是我需要在连接中嵌入复杂的条件 我想从A中的所有字段中提取和计算信息,即使不满足将导致零0作为计数的条件
第一个适用于计数的案例
$this->db->distinct();
$this->db->select('A.id, count(B.id) AS C');
$this->db->from('A');
$this->db->join('B','B.id=A.id','left outer');
$this->db->group_by('A.id');
现在,如果我想在一个日期时间A的行上添加条件,那么我们在给定日期之后从A中提取所有信息,同样的事情,如果条件不满意,我们返回0:
$this->db->distinct();
$this->db->select('A.id, count(B.id) AS C');
$this->db->from('A');
$this->db->join('B','B.id=A.id','left outer');
$this->db->where('B.date >',$date);
$this->db->group_by('A.id');
此代码正在运行,但仅重新启动满足条件的行,而不是仅将0作为计数的所有其他行。
有人能告诉我where子句有什么问题吗?
由于
答案 0 :(得分:1)
where
正在撤消left outer join
。你能做到吗?
$this->db->join('B','B.id=A.id and 'B.date >', $date, 'left outer');
在SQL中,您可以通过将两个条件放在on
语句中来处理:
from A left outer join
B
on B.id = A.id and B.date > $date;