以前曾以不同的方式提出过这个问题,但我似乎无法得到适合我确切需要的东西。
此处的目标是进行搜索查询,该查询根据所选标签返回照片。许多标签可以同时应用于过滤器,这需要使查询只返回选择了所有标签的照片。想想在执行基本关键字搜索后您正在缩小结果范围的任何主要网上商店。
表 1:照片 ID|标题|描述|URL|已创建
表 2:PhotosTagsXref ID|PhotoId|TagId
表 3:照片标签 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。