2013-08-30 38 views
0

我无法得到一个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

是在2013年8月30日09:00:00这种格式的日期$?我的意思是YYYY-MM-DD HH:MM:SS格式? –

+0

是的,它是从MySQL DATETIME格式提取日期,我做了比较 – Rad

回答

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; 
+0

我也试过,但由于某些原因日期比较运行不正常,我有一个计数,但尽管有日期过滤器的所有行! – Rad