MySQL连接2个表

时间:2014-02-28 13:42:56

标签: mysql join

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

下面的修复有效,但当我在业务客户端进行搜索时,它返回[]。客户端搜索工作正常。

2 个答案:

答案 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中连接表