嗨,伙计们,我正在尝试使用mysql和codeigniter从两个不同的表中获取结果,实际上我能够做到这一点,问题是一个表(empleados)有名称、姓氏等数据(见图片),另一个表(cuentas)有空列,因为我稍后将根据结果插入它们,问题是,如果cuentas没有存储任何数据,它就不会显示来自另一个表(name、last_name等)的结果,所以即使另一个表没有存储数据,我也希望看到结果。
这是控制器:
function search2()
{
if ($_POST) {
$Interno=$_POST['Interno'];
}else{
$Interno = '';
}
$this->db->select('empleados.Interno, empleados.Curp, empleados.Nombre, empleados.A_Paterno, empleados.A_Materno, cuentas.Clabe, cuentas.Banco, cuentas.Observaciones, cuentas.Status');
$this->db->from('empleados');
$this->db->join('cuentas','cuentas.Interno = empleados.Interno');
$this->db->where('empleados.Interno', $Interno);
$this->db->where('cuentas.Status !=', 'I');
$q = $this->db->get();
$data = array();
$data['records'] = $q->result_array();
$this ->load -> view('main/indice', $data);
}
这是视图:
<?php
foreach ($records as $row) {
echo"<br></br>";
echo "<label class='control-label'>Interno</label>";
echo "<input type='text' id='Interno' name ='Interno' class='form-control Input col-sm-3' placeholder='Interno' value='".$row['Interno']."'>";
echo "<label class='control-label'>CURP</label>";
echo "<input type='text' id='curp' name ='curp' class='form-control Input col-sm-3' placeholder='Curp' value='".$row['Curp']."'>";
echo "<label class='control-label'>nombre</label>";
echo "<input type='text' id='nombre' name ='nombre' class='form-control Input col-sm-3' placeholder='Nombre' value='".$row['Nombre']."'>";
echo "<label class='control-label'>Apellido Paterno</label>";
echo "<input type='text' id='A_Paterno' name ='A_Paterno' class='form-control Input col-sm-2' placeholder='Apellido Paterno' value='".$row['A_Paterno']."'>";
echo "<label class='control-label'>Apellido Materno</label>";
echo "<input type='text' id='A_Materno' name ='A_Materno' class='form-control Input col-sm-1' placeholder='Apellido Materno' value='".$row['A_Materno']."'>";
echo "<label class='control-label'>Clabe</label>";
echo "<input type='text' id='Clabe' name ='Clabe' class='form-control Input col-sm-3' placeholder='' value='".$row['Clabe']."'>";
echo "<label class='control-label'>Banco</label>";
echo "<input type='text' id='Banco' name ='Banco' class='form-control Input col-sm-2' placeholder='' value='".$row['Banco']."'>";
echo "<label class='control-label'>Observaciones</label>";
echo "<input type='text' id='Observaciones' name ='Observaciones' class='form-control Input col-sm-1' placeholder='' value='".$row['Observaciones']."'>";
}
?>
这是当表“cuentas”没有任何信息,但表“empleados”有任何信息时的页面。
这是当表“cuentas”有数据时的页面
同样,我希望看到第一个表的结果,即使第二个表有空字段。
最佳答案
您需要一个左联接而不是内部联接,还需要在联接部分移动cuentas.Status
筛选器,这样,如果在empleados
表中找不到相关行,您将得到cuentas
记录
$this->db->select('empleados.Interno, empleados.Curp, empleados.Nombre, empleados.A_Paterno, empleados.A_Materno, cuentas.Clabe, cuentas.Banco, cuentas.Observaciones, cuentas.Status');
$this->db->from('empleados');
$this->db->join('cuentas',"cuentas.Interno = empleados.Interno AND cuentas.Status !='I'", 'left');
$this->db->where('empleados.Interno', $Interno);
$q = $this->db->get();