Codeigniter如何避免重复显示一对多的关系

时间:2017-05-29 08:21:07

标签: php mysql codeigniter grocery-crud

我一直在尝试显示没有重复的行,但查询无法正常工作。我认为问题是一对多的关系,因为一个' intervaloHorario'有很多' citas'因此,例如,我只想显示:'从8:00到15:00(这是一个intervaloHorario)'到目前为止(cita)' 27/08 / 1988'。我该怎么办?

控制器

$this->Fechacita_Model->delete_duplicaterow();

模型

 public function delete_duplicaterow() {      
  $this->db->select('
            c.intervaloHorario','ci.cita'

        );       

  $this->db->from('intervaloshorarios c');
  $this->db->join('citas ci', 'ci.idCitas = c.idIntervaloHorario','left');
  $this->db->group_by('c.idIntervaloHorario','ci.cita');
  $query =  $this->db->get();  
    return $query->num_rows();
}

模型(编辑)

$this->db->select(array('c.intervaloHorario', 'ci.cita'));
        $this->db->distinct();
        $this->db->from('intervaloshorarios c');
        $this->db->join('citas ci', 'ci.idCitas = c.idIntervaloHorario', 'left');
        $this->db->group_by('c.idIntervaloHorario', 'ci.cita');

        $query = $this->db->get();
        $this->db->last_query();
        return $query->num_rows();

数据库

Database

当前数据库

Current database

截图

Duplicate

当前列表(无序列表但重复项仍然存在)

Dup persists

2 个答案:

答案 0 :(得分:2)

您可以使用$this->db->distinct()并添加选择主键以删除重复项:

public function delete_duplicaterow() {      
  $this->db->select(array('c.intervaloHorario', 'ci.cita'));       
  $this->db->distinct();
  $this->db->from('intervaloshorarios c');
  $this->db->join('citas ci', 'ci.idCitas = c.idIntervaloHorario','left');
  $this->db->group_by('c.idIntervaloHorario','ci.cita');
  $query =  $this->db->get();  

  return $query->num_rows();
}

答案 1 :(得分:1)

在查询中使用关键字DISTINCT

参考:https://dev.mysql.com/doc/refman/5.7/en/distinct-optimization.html