我有一些像下面这样的 mysql 表,
1) 视频
id name
1 test1
2 test2
2)标签
id name
1 theme1=test1
2 theme1=test2
3 theme2=test1
4 theme2=test2
5 age=senior
6 age=children
3)tags_to_items
vid tagid
1 1
1 5
在表 tags_to_item
中,您会看到 videos.id=1
有 2 个标签
1)theme1=test1
和 2)age=senior
。这意味着 video.id=1
有 2 个标签。
现在这里有一个冲突,
我现在正在做的是,我只搜索主题。这意味着如果我搜索 theme1=theme1 那么它还需要在 theme2 中搜索 theme1 ,反之亦然。像这样
WHERE tagid=1 OR tagid=2
这功能正常,但现在我想搜索视频是否有多个带有 AND 条件的标签
WHERE tagid=5 AND tagid IN (1,2)
它应该返回video.id=1
因此,可能需要搜索视频 1 包含标签 age=senior
AND theme1=theme1
OR theme2=theme1
的位置。但它不起作用,有人知道我该怎么做吗?
最佳答案
我想我得到了答案。 我需要像这样加入,
INNER JOIN tags_to_items t2 ON (v.id = t2.tagid AND t2.tagid = 5)
INNER JOIN tags_to_items t3 ON (v.id = t3.tagid AND t3.tagid in ('27' ,'69','84' ,'99' ))
关于php - 如果匹配多个类型则选择查询记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31422780/