[英]php mysql search in 2 columns in 2 tables
我在一個DB中有兩個表,一個叫做Cottages,另一個叫做Hotels。 在兩個表中,它們具有相同的命名字段。
我基本上有一個搜索欄,我希望它在兩個表中的兩個字段中搜索。 (這兩個字段被稱為“名稱”和“位置”
我到目前為止
$sql = mysql_query("SELECT * FROM Cottages WHERE Name LIKE '%$term%' or Location LIKE '%$term%' LIMIT 0, 30");
但是這只搜索Cottages表,我怎樣才能搜索小屋和酒店桌子?
如果僅將兩個表合並為一個並添加type
的新字段(具有類似山寨或酒店的值)以識別每條記錄,那會更好。
這就是所謂的規范化 ,它正是WordPress在保存sabe數據庫表上的帖子,類別,附件和頁面時所做的事情。
TiuTalk的答案是正確的 - 如果兩個表中的列相同,您應該只使用一個表來存儲此數據,並添加一個類型列。
另外使用LIKE '%foo%'
很慢。 您應該查看全文搜索 。 它還以與LIKE相同的方式處理多個表,您可以按相關性進行排序。 按相關性排序時,無論它們來自哪個表,您都會首先獲得最相關的行。
如果您無法更改設計並希望從每個表中獲得正好一半的結果,則可以單獨查詢每個結果並使用UNION ALL組合結果:
(SELECT * FROM Cottages WHERE Name LIKE '%$term%' or Location LIKE '%$term%' LIMIT 15)
UNION ALL
(SELECT * FROM Hotels WHERE Name LIKE '%$term%' or Location LIKE '%$term%' LIMIT 15)
顯然,兩個表中的列必須相同才能實現。 不要使用SELECT *
- 您應該明確列出列名,否則重新排序列可能會導致此查詢中斷。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.