如何在两个特定列的两个表中制作“%search%”


How can I make a '%search%' in two tables at two specific columns?

我有两个表:

表 1:

ID int auto_increment

person_name瓦尔查尔

person_nickname瓦尔查尔

表 2:

ID int auto_increment

company_name瓦尔查尔

company_nickname瓦尔查尔

我想在两个

字段(不是 ID)上搜索两个表,只有一个查询。

我的搜索表单如下所示:

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

基本上,我想要的是创建一个搜索字段,该字段将在这两个特定的表字段中进行搜索。

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

您没有指定您想要的结果类型,因此这是我对您可能想要的结果的看法。我确实想指出LIKE的性能相当差,因此我下面的代码将运行得越差,数据库越大。

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

(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的结果:

  • 表: 表1, ID: 5, 姓名: 戴夫·琼斯, 昵称: 大力水手
  • 表:
  • 表1,编号:3,姓名:大卫测试,昵称:戴夫
  • 表:
  • 表2,编号:5,名称:戴夫公司,昵称:彼得森斯
  • 表:
  • 表2,ID:3,名称:我的公司,昵称:戴维斯特

更多关于 UNION at http://dev.mysql.com/doc/refman/5.0/en/union.html

的信息