【问题标题】:Codeigniter how to avoid duplicates showing one to many relationshipCodeigniter 如何避免重复显示一对多关系
【发布时间】:2017-10-29 11:36:29
【问题描述】:

我一直在尝试显示没有重复的行,但查询无法正常工作。我认为问题在于一对多的关系,因为一个“intervaloHorario”有很多“citas”。因此,例如,我只想显示:“从 8:00 到 15:00(这是一个间隔时间)”到日期(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();

数据库

当前数据库

截图

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

【问题讨论】:

  • 尝试$this->db->distinct($columnName); 其中$columnName 是您要区分的列。
  • 这样,查询会一直显示相同的重复行

标签: php mysql codeigniter grocery-crud


【解决方案1】:

您可以使用$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();
}

【讨论】:

  • 我试过了,但没有用。我也一直在尝试改变不同的线(上面和下面)......
  • 没有错误,但列表和上面的截图一样
  • 尝试添加主键选择列:$this->db->select('your primary key', 'c.intervaloHorario','ci.cita');
  • 它不起作用(没有任何改变),我认为 distinct() 函数无法正常工作或其他原因
  • 我已将数据库关系从 1:n 更改为 1:1 仍然无法正常工作
【解决方案2】:

在查询中使用关键字DISTINCT

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

【讨论】:

    猜你喜欢
    • 2019-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多