我有一个常见的问题可以确定。我想进行查询以查找具有“n”标签的实体。所以在最简单的情况下,我们会找到所有带有“嘿”标签的实体。在更复杂的情况下,我们会找到所有具有“hey”、“hi”和“howdy”标签的实体。
看来我必须加入标签表 3 次,从而创建 3 个不同的别名。在抽象情况下,我将不得不制作 N 个不同的别名。有没有更简单的方法来实现这一点?
我问的原因是我需要编写一个查询,不仅对标签执行此操作,而且对各种事物执行此操作。所以我基本上要加入 NxM 别名......这会很糟糕地编写(和调整)查询。
帮助?
编辑:
没关系。我找到了解决方案:
select distinct g.id, g.description
FROM gallery g
inner join gallery_to_tag g2t_0
on g2t_0.gallery_id = g.id
inner join tag t_0
on t_0.id = g2t_0.tag_id and t_0.term = 'hi'
inner join gallery_to_tag g2t_1
on g2t_1.gallery_id = g.id
inner join tag t_1
on t_1.id = g2t_1.tag_id and t_1.term = 'hey'