搜索多个表格

时间:2011-06-27 03:21:32

标签: php mysql search

我有四个不同的表,比如table1,table2,table3和table4,这个表包含不同的数据;现在我想在这4个表上进行搜索,得出一个结果。

table1-fields: 
id, product_name, price, product_category; 
table2-fields: 
id,company_name, company_description, location; 
table3-fields:
id, business_name, location, business_category;
table4-fields:
id, building_type, location, name

我有这样的表格:

<form name="me" action="search.php"> 
<input type="text" name="search" style="width:inherit;" size="25"  
value="type your search here" 
onclick="me.search.value='';" style="font-size:small" height="20"/>
<input type="submit" name="Submit2" class="button" value="SEARCH"  />
</form>

在search.php中我想要像

这样的东西
SELECT * FROM table1, table2, table3, table4 
WHERE table1.product_name LIKE '%" . $name .  "%' 
OR table2.company_name LIKE '%" . $name .  "%' 
OR table3.business_name LIKE '%" . $name .  "%' 
OR table4.name LIKE '%" . $name .  "%'`; 

一个sql语句,它将同时搜索这4个表。

我怎么能这样做?请帮忙。

2 个答案:

答案 0 :(得分:2)

如果存在公共元素,例如每个表之间共享的ID或其他标识符,则可以使用JOIN。这将允许您根据每个表中包含的数据选择行。

您需要提供有关表格的更多信息以及您要为我提供的内容,以便能够提供完整的示例。

答案 1 :(得分:0)

为每个表写一个查询,在每个查询的相同列中返回结果;使用UNION将它们组合成1个结果集:

(SELECT id, name from table1 where name='bob')
UNION
(SELECT moar_id as id, nickname as name from table2 WHERE nickname='bob')
UNION
(SELECT account_id as id, fullname as name from table2 WHERE fullname='bob')

http://dev.mysql.com/doc/refman/5.0/en/union.html