Sql 根据在另一个表中找到的表中的数据启动订单

Sql 根据在另一个表中找到的表中的数据启动订单,sql,codeigniter,Sql,Codeigniter,我的问题可能不容易解释,但我会尽我所能。 我有三张桌子: 药 病人 病人医学 第三个表包含3列: 自动增量(id) 药品标识 病人编号 我进行一个查询,显示medicine表中的所有数据,如果在patient_medicine表中找到了患者id,我将进行检查,未找到的将不进行检查 A-控制器 public function showPatientMedicine() { $data['patient_id']=$this->input->post('patient_id'); $d

我的问题可能不容易解释,但我会尽我所能。 我有三张桌子:

  • 病人
  • 病人医学
  • 第三个表包含3列:

  • 自动增量(id)
  • 药品标识
  • 病人编号
  • 我进行一个查询,显示medicine表中的所有数据,如果在patient_medicine表中找到了患者id,我将进行检查,未找到的将不进行检查

    A-控制器

    public function showPatientMedicine()
    { 
    $data['patient_id']=$this->input->post('patient_id');
    $data['medicine'] = $this->model_admin->medicine();
    $this->load->view('admin/show-Patient-Medicine',$data);
    
    }
    
    B视图

    <table>
     <thead>
    <tr>
    <th>List</th><th></th>
    </tr>
     </thead>
     <tbody>
    <?php
    
    foreach($medicine as $row){
    $patient_med=$this->db->select('medicine_id')
    ->where('patient_id',$patient_id)
    ->where('medicine_id',$row->id)
    ->get('patient_medicine')->row('medicine_id');
    
    if($row->id==$patient_med){
        $checked="checked";
    } else {
       $checked="";
    }
    
    ?>
    <tr>
    <td>
    
    </td>
    <td>
    <input type='checkbox' value="<?=$row->id?>" <?=$checked?> />
    </td>
    
    </tr>
    <?php
    }
    ?>
    </tbody>
    </table>
    
    
    列表
    试试这个

    SELECT * FROM `medicine` as a left join (select medicine_id,patient_id from patient_medicine where patient_id = 2) as b on a.id = b.medicine_id 
    
    将上述查询放入控制器中,如果找到患者详细信息,它将根据患者id自动对结果进行排序。它将为行中除药品详细信息以外的所有其他详细信息返回null

    所以你可以

    <?php foreach($medicine as $row){ ?>
    
    <input type='checkbox' value="<?=$row->id?>" <?php echo !is_null($row->patient_id)?'checked':''; ?> />
    
    <?php } ?>
    
    
    />
    
    描述数据转换的最佳方式是使用示例数据和预期结果(格式良好的文本)。非常感谢兄弟的帮助,我应用了你的代码,现在我所有的行显示方式都和我的代码发布方式一样。我想把支票放在第一个位置。