MySQL连接显示多条记录

时间:2014-05-29 14:42:40

标签: php mysql sql codeigniter

我正在使用CodeIgniter,在我的sql连接查询中,它获取重复值。例如,如果tbl_employee_contact有两个联系号码,则会显示两次相同的记录,每个联系号码都不同。如何只显示一条记录?

Database image

Image example

这是我的模特

function get_records(){
    $this->db->select(array(
         'tbl_employee_registration.emp_id',
         'tbl_employee_registration.emp_fname',
         'tbl_employee_registration.emp_email',
         'tbl_employee_registration.emp_status',
         'tbl_employee_contact.emp_contact',    
    ));
    $this->db->from('tbl_employee_registration');
    $this->db->join('tbl_employee_contact','tbl_employee_contact.emp_id=tbl_employee_registration.emp_id');

    $query = $this->db->get();
    return $query->result();
}

这是我的控制器

function manage_operators(){
    $data = array();
    if($query = $this->mod_employee->get_records())
    {
        $data['records'] = $query;
    }
    $this->load->view('admin/admin_manage_operators',$data);
}

2 个答案:

答案 0 :(得分:1)

您需要名为GROUP BY的内容或将DISTINCT添加到您的选择查询中。

$this->db->select(array(
    'DISTINCT  tbl_employee_registration.emp_id',
    'DISTINCT  tbl_employee_registration.emp_fname',
    'DISTINCT  tbl_employee_registration.emp_email',
    'DISTINCT  tbl_employee_registration.emp_status',
    'DISTINCT  tbl_employee_contact.emp_contact',    
));

或者您可以选择所有数据,但在循环中只需添加具有唯一ID的数组,例如

$arr[$ID][] = $record

答案 1 :(得分:1)

您可以使用group_by

 $this->db->group_by("your table");

最后你的模型看起来像这样

 function get_records(){
        $this->db->select(array(
            'tbl_employee_registration.emp_id',
            'tbl_employee_registration.emp_fname',
            'tbl_employee_registration.emp_email',
            'tbl_employee_registration.emp_status',
            'tbl_employee_contact.emp_contact',    
        ));
        $this->db->from('tbl_employee_registration');
        $this->db->join('tbl_employee_contact','tbl_employee_contact.emp_id=tbl_employee_registration.emp_id');
        $this->db->group_by("tbl_employee_registration.emp_id");

        $query = $this->db->get();
        return $query->result();
    }