嗨,伙计们,我正在尝试使用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”有任何信息时的页面。
php - 使用codeigniter,如果某些列为空,则查询不会显示结果-LMLPHP
这是当表“cuentas”有数据时的页面
php - 使用codeigniter,如果某些列为空,则查询不会显示结果-LMLPHP
同样,我希望看到第一个表的结果,即使第二个表有空字段。

最佳答案

您需要一个左联接而不是内部联接,还需要在联接部分移动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();

09-06 16:38