如何在两个特定列的两个表中创建'%search%'?

时间:2014-12-09 18:38:28

标签: php mysql forms search

我有两张桌子:

表1:

  

ID int auto_increment

     

person_name varchar

     

person_nickname varchar

表2:

  

ID int auto_increment

     

company_name varchar

     

company_nickname varchar

我想在两个字段(不是ID)中搜索两个表,仅使用一个查询。

我的搜索表单如下:

 <form method="post" action="">
     <input type="text" name="search" />
     <button type="submit" title="Pesquisar" class="btn-search"></button>
 </form> 

基本上我想要的是创建一个搜索字段来搜索这两个特定的表字段。

1 个答案:

答案 0 :(得分:0)

我不知道为什么你想要一个查询,但我会试着让你知道一个完成它的方法。

你没有指定你想要的结果类型,所以这里是你想要的结果。我想指出LIKE的性能相当差,所以下面的代码运行得很差,db会越大。

我不确定这是正确的方法,但这样的事情应该有效:

(SELECT 'table1' AS 'table', id, person_name AS 'name', person_nickname AS 'nickname'
  FROM table1
  WHERE (person_name LIKE '%search%' OR person_nickname LIKE '%search%'))
UNION 
(SELECT 'table2' AS 'table', id, company_name AS 'name', company_nickname AS 'nickname'
  FROM table2
  WHERE (company_name LIKE '%search%' OR company_nickname LIKE '%search%'))

这将返回Search=Dave的结果,如:

  • table:table1,id:5,姓名:Dave Jones,昵称:Popeye
  • table:table1,id:3,name:David Test,昵称:Dave
  • table:table2,id:5,name:CompanyDave,昵称:Petersons
  • table:table2,id:3,name:MyCompany,昵称:Davestest

有关UNION的更多信息http://dev.mysql.com/doc/refman/5.0/en/union.html