通过另一个表中的表中的数据启动订单

时间:2018-08-21 20:31:06

标签: sql codeigniter

我的问题可能不容易解释,但我会尽力而为。 我有3张桌子:

  1. 药物
  2. 病人
  3. patient_medicine

第三个表包含3列:

  1. 自动增量(id)
  2. medicine_id
  3. patient_id

我进行查询,以显示药物表中的所有数据,如果在Patient_medicine表中找到患者ID,我将对其进行检查,而未找到的患者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>

此查询将向我显示所有药物并检查“ PATIENT_MEDICINE”表中找到的药物

我的问题是:

我如何显示所有在第一个位置检查过的药物,或如何通过检查的复选框进行订购?

谢谢您。

1 个答案:

答案 0 :(得分:0)

尝试一下

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 } ?>