搜索Mysql数据库的多个表

时间:2011-01-04 10:51:29

标签: php mysql select

我有以下代码:

    $query = "select * from customer where Surname  like \"%$trimmed%\" OR TitleName  like \"%$trimmed%\" OR PostCode  like \"%$trimmed%\"
  order by Surname";

但是,我还有另一个表,我想用相同的参数(变量)进行搜索。我知道像“select * from customer,othertable”这样的东西可能是不可能的,有没有办法做到这一点?

通过使用UNION,它会关闭我的页面,甚至无法正确搜索

    $query = "select * from customer where Surname  like \"%$trimmed%\" OR TitleName  like \"%$trimmed%\" OR PostCode  like \"%$trimmed%\"
  order by Surname UNION select * from mooring where Number like \"%$trimmed%\"";

3 个答案:

答案 0 :(得分:2)

您可以使用UNION运算符从多个表中进行搜索。

答案 1 :(得分:1)

如果表结构不同,则必须使用多个查询和多个代码片段来处理不同类型的结果。或者,您可以使用UNION运算符仅选择两个表中的类似字段。您可以清空不匹配的字段。考虑一下:

SELECT CustomerID, Surname, PostCode, NULL AS Number, 'CUSTOMER' AS Type 
# Suppose that the 'Number' column does not exist in this table
FROM   Customer
WHERE  Surname   LIKE '%$trimmed%'
OR     TitleName LIKE '%$trimmed%'
OR     PostCode  LIKE '%$trimmed%'

UNION

SELECT MooringID,  Surname, NULL,     Number,         'MOORING'
# Suppose that the 'PostCode' column does not exist in this table
FROM   Mooring
WHERE  Number    LIKE '%$trimmed%'

ORDER BY 2 # ORDER BY goes to the very end of the union query in this case

答案 2 :(得分:1)

您的UNION语法不正确。

  1. 列数和类型必须相同。如果不是这种情况,请使用两个查询。
  2. ORDER BY必须在查询结束时,而不是在UNION之前。