我有一些如下的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
和theme1=theme1
或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/