加入时间比较

时间:2013-08-30 02:35:13

标签: sql codeigniter join count

我在使用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子句有什么问题吗?

由于

1 个答案:

答案 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;