如何在“ JOIN” SQL查询中使用“ WHERE”

时间:2019-01-04 14:13:12

标签: php mysql codeigniter join

我正在尝试从请求表中获取数据,但是我只需要表的特定行。因此通常情况下,我使用where('hospital_id',$hospital_id),但使用联接查询来查询用户的姓名和血型,因此当我尝试将WHERE放入联接查询时,它会显示:

  

“此页面无法使用” HTTP错误500。

我尝试以其他方式放置WHERE,例如:在from之后,join之后,但是结果保持不变。

这是我的模特:

 $hospital_id =$this->session->userdata('hospital_id');

 $query=$this->db

 ->select('*, user.name as h_name, blood.btype as blood_type')
 ->where('hospital_id',$hospital_id)
 ->from('request')

->join('user', 'user.id= request.user_id')
->join('blood', 'blood.id= request.blood_id')


->get()->result(); 

这是我的控制人:

   public function view_req()
   {
     if(!$this->session->userdata('hospital_id'))
       {
         return redirect('Login/loginview_load2');

       }
      else {
        $this->load->model('Partner_model');
       //$data['title']="partner profile";
       $data['all_blood']=$this->Partner_model->get_id_req();
       $this->load->view('view_request',$data);
      }
   }

这是我的观点:

 <?php if(count($all_blood>0))
  { $i=0;
  foreach ($all_blood as $user) {
  $i++;
  ?>
  <tr>
  <td><?php echo $i ?></td>
  <td><?php echo $user->user_id ?></td>
    <td><?php echo $user->h_name ?></td>
  <td><?php echo $user->blood_id?></td>
  <td><?php echo $user->blood_type?></td>

  <?php }
  }?>

3 个答案:

答案 0 :(得分:0)

此消息错误可能来自其他代码。无论如何,您可以尝试使用

调试查询
    ->get_compiled_select()

之前-> get()

更多信息https://www.codeigniter.com/userguide3/database/query_builder.html

答案 1 :(得分:0)

该页面无法工作,因为它具有多个表中相同的字段名称,只需更改字段名称即可。 有两个表血液和请求,当您使用联接查询时,它工作正常,但是当您应用“ where”条件时出现了问题。 两个表都具有相同的名称字段“ hospital_id”,因此“ where”条件不起作用并显示“页面不起作用”。请不要在不同的表中使用相同的字段名称

答案 2 :(得分:0)

您是否尝试过将 -> where('hospital_id',$ hospital_id) 放在 -> join( < / strong>?

$this->db->select("*, user.name as h_name, blood.btype as blood_type");
$this->db->from('request');
$this->db->join('user', 'user.id= request.user_id');
$this->db->join('blood', 'blood.id= request.blood_id');
$this->db->where('hospital_id',$hospital_id);

继续努力!