2013-10-08 42 views
1

的尝试代码排序:笨活动记录 - 防止重复,按日期

$this->db->select('*'); 
    $this->db->from('documents_table'); 
    $this->db->order_by("last_modified_date", "desc"); 
    $this->db->group_by('document_id'); 

    $query = $this->db->get(); 

表结构:

ID,DOCUMENT_ID,内容,LAST_MODIFIED_DATE

问题:

设计系统意味着更新文档时,将使用相同的document_id和更新的内容创建实际的新记录。

现在我需要将文档显示在列表中,但是如果它们是具有相同document_id的多个文档(基本上是旧版本的文件),则只应显示最新版本。当前代码只输出第一个版本,所以需要切换。

是group_by正确的方法吗?任何有经验的人都可以弄清楚为什么它不按预期工作,还是我做错了?

回答

1
$this->db->select('*'); 
$this->db->from('documents_table'); 
$this->db->order_by("last_modified_date", "desc");  
$this->db->where('id IN (SELECT MAX(id) FROM documents_table GROUP BY document_id)'); 

试一试(未经测试)。

+0

完美!根据需要工作!非常感激! –

0
$this->db->select('MAX(id) , document_id , content , last_modified_date'); 
$this->db->from('documents_table'); 
$this->db->order_by("last_modified_date", "desc"); 
$this->db->group_by('document_id'); 

$query = $this->db->get(); 

未经测试

+0

没有。仍然得到旧的记录,而不是最新的记录。 –