【问题标题】:MySQL join on 2 tablesMySQL加入2个表
【发布时间】:2014-02-28 13:42:56
【问题描述】:

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

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

【问题讨论】:

  • 这是错误的:WHERE lastname, busname
  • 你能提供样本数据和想要的结果吗?您的非工作查询并未传达您真正想要做的事情。
  • 在问题中描述您的WHERE 子句应该做什么。 (正如@RobertRozas 所说,您的 WHERE 子句是问题所在)
  • 重新定义您的问题...同时解释下哪个表记录了 lastname、busname 和 Agencyid

标签: mysql join


【解决方案1】:

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

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

UNION 

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

【讨论】:

  • 仅当两个表结构包含相同的列和数据类型时。
  • 这可行,但是当我在 busclients 上进行搜索时,它返回 []。当我对客户端进行搜索时,它会正确返回。
【解决方案2】:

你的 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 中连接表

【讨论】:

  • 我非常怀疑这一点。 c.lastname 作为布尔表达式不太可能
  • 当我这样做时,它给了我一个错误,说机构 ID 不明确?
  • 这个查询我是盲目的!!您需要将元数据放在问题正文中,以便我们更好地分析它!
猜你喜欢
  • 2012-05-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 2013-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多