ajax在php中搜索多个表连接
Posted
技术标签:
【中文标题】ajax在php中搜索多个表连接【英文标题】:ajax search for multiple table join in php 【发布时间】:2019-02-26 15:14:43 【问题描述】:我正在使用 ajax 来实现搜索功能。有依赖的多表连接。 我没有得到正确的结果。我想要唯一的搜索结果。下面给出了我的代码:
$this->db->distinct('table2.sname,table3.cname');
$this->db>select('table1.stname,table2.*,table3.*,table4.*,table5.*');
$this->db->from('table5');
$this->db->join('table1','table1.stid=table2.stid');
$this->db->join('table2','table2.sid=table3.sid');
$this->db->join('table3','table3.cid=table4.cid');
$this->db->join('table4','table4.tid=table5.tid');
$this->db->or_like("table1.stname",$keyword);
$this->db->or_like("table2.sname",$keyword);
$this->db->or_like("table3.cname",$keyword);
$this->db->or_like("table4.tname",$keyword);
$this->db->or_like("table5.stoname",$keyword);
$query = $this->db->get();
【问题讨论】:
独特的结果。 .您的意思是查询的第一个结果或查询失败,因为返回多于行? 您的第一个$this->db->or_like()
应该是$this->db->like()
,因为它是查询中的第一个。您还需要返回result_array
,您可以在代码末尾键入return $query->result_array();
。
还有你想要达到的结果是什么?
我在所有连接的表中搜索键入的关键字。但我没有得到所有键入关键字的正确结果
【参考方案1】:
如果您需要第一行表单选择,那么您可以使用 limit(1)
<?php
$this->db->distinct('table2.sname,table3.cname');
$this->db>select('table1.stname,table2.*,table3.*,table4.*,table5.*');
$this->db->from('table5');
$this->db->join('table1','table1.stid=table2.stid');
$this->db->join('table2','table2.sid=table3.sid');
$this->db->join('table3','table3.cid=table4.cid');
$this->db->join('table4','table4.tid=table5.tid');
$this->db->or_like("table1.stname",$keyword);
$this->db->or_like("table2.sname",$keyword);
$this->db->or_like("table3.cname",$keyword);
$this->db->or_like("table4.tname",$keyword);
$this->db->or_like("table5.stoname",$keyword);
$this->db->limit(1);
$query = $this->db->get();
?>
或者如果您需要所有查询结果,则返回 result()
<?php
$this->db->distinct('table2.sname,table3.cname');
$this->db>select('table1.stname,table2.*,table3.*,table4.*,table5.*');
$this->db->from('table5');
$this->db->join('table1','table1.stid=table2.stid');
$this->db->join('table2','table2.sid=table3.sid');
$this->db->join('table3','table3.cid=table4.cid');
$this->db->join('table4','table4.tid=table5.tid');
$this->db->or_like("table1.stname",$keyword);
$this->db->or_like("table2.sname",$keyword);
$this->db->or_like("table3.cname",$keyword);
$this->db->or_like("table4.tname",$keyword);
$this->db->or_like("table5.stoname",$keyword);
$query = $this->db->get();
return $query->result();
?>
【讨论】:
我想要查询的所有结果而不是单行。 @PRIYANKAMORE 答案已更新 .. 希望是您想要的以上是关于ajax在php中搜索多个表连接的主要内容,如果未能解决你的问题,请参考以下文章
如何正确使用连接/子查询从多个表中选择数据? (PHP-MySQL)
php函数以获取数据,将具有通用字段名称的多个表连接起来并显示输出[重复]