如何在join sql查询中使用where

oaxa6hgo  于 2021-06-16  发布在  Mysql
关注(0)|答案(3)|浏览(411)

我试图从请求表中获取数据,但我只需要表的特定行。所以在正常情况下,我用 where('hospital_id',$hospital_id) 但是我使用join查询用户名和血型,所以当我尝试 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 }
  }?>
owfi6suc

owfi6suc1#

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

->get_compiled_select()

在->get()之前
更多信息https://www.codeigniter.com/userguide3/database/query_builder.html

yduiuuwa

yduiuuwa2#

您是否尝试过将->where('hospital\u id',$hospital\u id)放在->join(?)?

$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);

继续努力!

pprl5pva

pprl5pva3#

该页无法工作,因为它的字段名与多个表的字段名相同,只需更改字段名即可&它工作正常。有两个表blood&request,当您使用join查询时,它工作得很好,但当您应用“where”条件时出现了问题。两个表都有相同的名称字段“hospital\u id”,所以“where”条件不起作用&显示“page不起作用”。请不要在不同的表中使用相同的字段名

相关问题