我有以下代码:
$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%\"";
答案 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语法不正确。