假设您有一个 posts 表和一个 Tags 表,两者都通过 post_tags 表关联。
所以
帖子有 id/subject/body 列
标签有 ID/名称
post_tags 具有 id/post_id/tag_id
用 Rails 术语来说,我有一个 Post 模型,它通过 AssetTags 有许多标签。
我正在尝试查询具有 2 个特定标签的帖子。 因此,如果有一个 Rails 标签和一个 mysql 标签,我想要一个返回仅包含这两个标签的帖子的查询。
有道理吗?
有什么方法可以使用 activerecord (我正在使用搜索逻辑)或 mysql 来做到这一点吗?
最佳答案
此 SQL 返回包含这两个标签的帖子。
select
p.*
from
posts p
,asset_tags atg1
,asset_tags atg2
,tags t1
,tags t2
where
p.id = atg1.post_id
and t1.id = atg1.tag_id
and t1.tag = 'MySQL'
and p.id = atg2.post_id
and t2.id = atg2.tag_id
and t2.tag = 'Rails'
;
对于通过事件记录执行此操作,另一种方法是查询每个标签,然后查询结果数组以获取两者的交集。
关于mysql - 你如何在mysql或rails中做到这一点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7991288/