MySQL 连接 2 个表

问题描述 投票:0回答:2

我需要对 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 显示结果。

下面的修复有效,但是当我在企业客户端上进行搜索时,它返回 []。客户搜索效果很好。

php mysql join
2个回答
0
投票

您可以使用两个单独的查询并将它们连接在一起,如下所示:

SELECT * FROM clients
WHERE lastname LIKE "%agencyid%"

UNION 

SELECT * FROM busclients
WHERE busname LIKE "%$agencyid%";

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'

为了完成这个循环,请确保您阅读了这篇文章,了解如何在 mysql 中连接表

© www.soinside.com 2019 - 2024. All rights reserved.