Rails Postgresql如何从一个表中获取JOIN?

问题描述 投票:0回答:1

我不确定如何更好地问这个问题。我有模型Item和模型Tag,关联度has_and_belongs_to_many

我需要从表items_tags中获取结果,该表包含具有2个标签记录的item_id。示例:

enter image description here

这里我需要item_id,其tag_id分别为1和2。(结果:item_id = 4)

因此,如果我使用WHERE tag_id = 1 AND tag_id = 2-没有结果。如果WHERE tag_id IN (1,2)-结果过多(红色和绿色)

我可以执行以下步骤:

1)first = tag1.items.pluck(:id)

2)second = tag2.items.pluck(:id)

3)what_i_need = (first & second)

另一种方法是一个查询:tag1.items.where(id: tag2.products.pluck(:id))

是否有另一种(更快)的方式来实现某些JOIN变体?

ruby-on-rails postgresql join associations
1个回答
0
投票

我希望这可以解决问题:

tag_ids = [1, 2]
Item.joins(:tags).where(tags: { id: tag_ids }).group(:id).having("count(*) = ?", tag_ids.size)
© www.soinside.com 2019 - 2024. All rights reserved.