我在mySQL中連接以產生一個可以搜索的字段。這包含動物以及客戶數據庫的所有者名稱和地址。我需要能夠以任何順序按動物名稱,所有者姓名和郵編進行搜索。 因此,如果,如果我的名字是約翰·史密斯和我自己的叫做菲狗,住在郵政編碼AB1 2CD,我想搜索是產量的結果,如果任何被輸入以下內容:在連接字段中以任意順序過濾mySQL數據庫
「約翰菲AB1」 「約翰AB1" ‘AB1約翰’ ‘AB1汪汪’ ‘汪汪2CD’ ‘2CD’ ‘汪汪’ 等...即任何以任意順序的領域,也沒有完整的單詞或者這樣的「約翰·菲AB1「應該產生與」jo fi AB1「相同的結果
我目前擁有這個PHP代碼,在我的搜索頁面上取一個單獨的文本字段,然後爆炸然後破壞它以添加%betwe EN搜索術語:
$list = explode(' ',$_GET["q"]);
$q = implode('%%', $list);
if (!$q) return;
$sql = "SELECT DISTINCT owner.AddressPrim, owner.PostcodePrim,
owner.OwnerSurnamePrim,owner.OwnerForenamesPrim,owner.OwnerID
FROM owner
Inner Join patient ON owner.OwnerID = patient.OwnerID
WHERE CONCAT_WS(' ',owner.AddressPrim, owner.PostcodePrim,
owner.OwnerForenamesPrim,owner.OwnerSurnamePrim,patient.AnimalName) LIKE '%$q%'";
這適用於「AB1約翰」和「約翰·菲多」,而不是「汪汪約翰」,因爲它是無序的級聯領域。
任何幫助,不勝感激
多麼可怕的想法......這個前端+結束通配符謂詞以及CONCAT_WS系統地引起一個表掃描! – mjv
+1爲娛樂價值 – Martin