這已經以不同的方式提出過,但我似乎無法得到一些適合我需要的東西。MySQL查詢顯示基於多個過濾器/標籤的結果
這裏的目標是使基於被選擇的標籤返回圖片搜索查詢。可以同時將多個標籤應用於過濾器,這需要使查詢只返回所有選中標籤的照片。想想任何主要的網絡商店,你在進行基本關鍵字搜索後縮小搜索結果。
表1:照片 ID |標題|描述|網址|創建
表2:PhotosTagsXref ID | PHOTOID |標籤識別
表3:PhotosTags ID |標題|分類
我有什麼:
SELECT p.* FROM `PhotosTagsXref` AS pt
LEFT JOIN `Photos` AS p ON p.`ID` = pt.`PhotoId`
LEFT JOIN `PhotosTags` AS t ON pt.`TagId` = t.`ID`
WHERE p.`Description` LIKE "%test%" AND
????
GROUP BY p.`ID`
ORDER BY p.`Created` DESC LIMIT 20
的????是我嘗試了一堆東西的地方,但難倒了。問題是我可以輕鬆找到包含帶有一個標籤或另一個標籤的照片的結果集,但是如果應用2,3或4個標籤,我們只需要返回具有數據庫中所有標籤條目的照片。我認爲這將涉及結果集合,但不是100%肯定。
例: 照片1個標籤:藍,白,紅 照片2個標籤:藍色
搜索與「藍色」標籤中的照片返回兩張照片,搜索與標籤照片「藍」和'白色'只返回照片1.
也許CONTAINS條款會幫助你。的 – Tony
可能重複[MySQL的在運營商必須將所有值匹配?(http://stackoverflow.com/questions/7505045/mysql-in-operator-must-match-all-values) –
我會使用內部聯接到子選擇聲明。你如何構建這個查詢,你如何接受投入?如果標籤數量存在上限,那麼您可以在此處執行僅限SQL語句。如果您對標籤沒有限制,那麼您需要在構建sql語句的過程中更具動態性。 – Twelfth