我需要在2个并发表上进行搜索,我认为这个连接可以正常工作,但它给我一个不正确的语法错误。
$return_arr = array();
$query = mysql_query("SELECT * FROM clients WHERE lastname LIKE '$q%' AND agencyid = '$agencyid'
UNION
SELECT * FROM busclients WHERE busname LIKE '$q%' AND agencyid = '$agencyid'")or die(mysql_error());
if($query) {
while ($result = mysql_fetch_array($query)) {
if(isset($result['busname'])){
$description['id'] = $result['ID'];
$description['value'] = $result['busname'] ;
array_push($return_arr,$description);
}
else
{
$description['id'] = $result['ID'];
$description['value'] = $result['lastname'] . ", " . $result['firstname'] ;
array_push($return_arr,$description);
}
}
}
echo json_encode($return_arr);
使用下面的修复程序和整个语法
进行编辑这是来自自动填充搜索框的查询。因此,当有人键入客户端或业务客户端名称时,它使用此查询搜索数据库,然后使用jquery显示结果。
下面的修复有效,但当我在业务客户端进行搜索时,它返回[]。客户端搜索工作正常。
答案 0 :(得分:0)
您可以使用两个单独的查询并将它们连接在一起:
SELECT * FROM clients
WHERE lastname LIKE "%agencyid%"
UNION
SELECT * FROM busclients
WHERE busname LIKE "%$agencyid%";
答案 1 :(得分:0)
您的sql语法应如下所示:
SELECT * FROM clients c
inner join
busclients b
on c.agencyid=b.idbus
WHERE (c.lastname and b.busname LIKE '$q%') AND c.agencyid = '$agencyid'
只是为了完成这个圈子,请务必阅读this article如何在mysql中连接表