【问题标题】:How to use 'WHERE' in 'JOIN' sql query如何在 'JOIN' sql 查询中使用 'WHERE'
【发布时间】:2019-01-04 14:13:12
【问题描述】:

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

“此页面无法正常工作”HTTP ERROR 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 }
  }?>

【问题讨论】:

  • 如果您可以访问它,您是否查看过您的网络服务器 ogs,它应该会用更多详细信息解释您的错误
  • @RaymondNijland -&gt;get 之后
  • 如果两个或所有桌子都有hospital_id - -&gt;where('request.hospital_id',$hospital_id) ?
  • 要获得正确的错误信息,请尝试stackoverflow.com/questions/5127838/…
  • 在配置为显示white screen of death 的网络服务器上总是很好的调试,而不是显示您在开发时需要的解析错误/通知/警告,您需要先解决那个问题.. 如果你不能修复自己,考虑联系您的虚拟主机或转移到其他虚拟主机

标签: php mysql codeigniter join


【解决方案1】:

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

调试您的查询
    ->get_compiled_select()

之前 ->get()

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

【讨论】:

  • 我在 get 之前放了 ->get_compiled_select() 但页面仍然无法正常工作
  • 解决不了问题。它将返回 CI 构建的整个句子,您可以查看它
【解决方案2】:

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

【讨论】:

  • 请对此进行扩展。如果存在导致问题的特定行、变量或字符串,请识别它以及导致意外行为的原因。就您现在的答案而言,它没有提供太多价值。
【解决方案3】:

您是否尝试将 ->where('hospital_id',$hospital_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);

继续努力!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-21
    • 2022-11-16
    • 2012-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多