Search Multiple Tables of a Mysql Database
I have the following code:
$query = "select * from customer where Surname like \"%$trimmed%\" OR TitleName like \"%$trimmed%\" OR PostCode like \"%$trimmed%\"
order by Surname";
However, I have another table which I want to search from with the same paramaters(variables) as that. I know that something like "select * from customer,othertable
" might not be possible, Is there a way to do it?
By using UNION it cuts my page off, and doesnt even search it properly
$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%\"";
You can use the UNION
operator to search from multiple tables.
Your UNION syntax is incorrect.
- The number of columns and types must be the same. If this is not the case use two queries.
- The ORDER BY must go at the end of your query, not before a UNION.
If your table structures are different you will have to use multiple queries and multiple fragments of code to handle the different type of results. Alternately, you can select only the similar fields from the two tables using the UNION operator. You can null out the fields that do not match up. Consider this:
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
精彩评论