簡體   English   中英

php mysql在2個表中的2列中搜索

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM