我正在进行基于标签的搜索.我有三个表标签(id,name),tagXmedia(id,tag_id,media_id)和media(id,...).tagXmedia是标记和媒体表之间的映射表.这是一对多的关系.
我真的可以在如何创建"AND"类型的搜索方面使用一点方向.例如,我需要能够在媒体表中搜索与"home"和"hawaii"标签相关联的条目.
我已经尝试过MySQL等存在
SELECT
tam.media_id
FROM
tagXmedia tam
LEFT JOIN tag ON tag.id = tam.tag_id
WHERE
EXISTS (SELECT * FROM tag WHERE tag.name = "home")
AND EXISTS (SELECT * FROM tag WHERE tag.name = "hawaii")
Run Code Online (Sandbox Code Playgroud)
对此有任何帮助真的很感激.
以下应该有效.
SELECT media_id
FROM tagXmedia
WHERE tag_id IN (SELECT id FROM tag WHERE name IN ('home','hawaii'))
GROUP BY media_id
HAVING COUNT(tag_id) = 2;
Run Code Online (Sandbox Code Playgroud)
如果您希望它不仅仅匹配两个标签,您可以轻松添加它们.只要记住改变2中HAVING的条款.
我假设所有的行tagXmedia都是唯一的.如果不是,则必须添加DISTINCT到COUNT零件中.
| 归档时间: |
|
| 查看次数: |
5051 次 |
| 最近记录: |