我有一些如下的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=test12)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=seniortheme1=theme1theme2=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/

10-09 19:11