我有四个不同的表,比如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个表。
我怎么能这样做?请帮忙。
答案 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')