gpt4 book ai didi

sql - 具有多个记录的 Rails 复杂查询设置

转载 作者:行者123 更新时间:2023-11-29 14:31:08 26 4
gpt4 key购买 nike

我试图弄清楚如何在 rails 中进行查询,其中有多个 id 从另一个查询返回。我有一张食物表,里面有很多化合物。我想做的是获得一份与原始食物至少有一种化合物的食物 list 。目前我有以下内容:

为了从最初的食物中获取化合物,我有这个:

def set_food
@food = Food.includes(:compounds).find(params[:id])
end

这设置了食物和化合物,我可以通过调用 each-do 输出所有内容并显示每种食物中的化合物。所以下一步我不确定该怎么做是如何从内容表中获取所有 food_id,其中 compound_id 等于上面返回的原始内容中的一个(希望这是有意义的)。所以像这样(我知道这是不对的)

def show
@pairs = Food.joins(:contents).where(contents: {compound_id: @food.contents.compound_id})
end

任何帮助将不胜感激,尝试使用谷歌搜索答案但甚至不确定要用谷歌搜索什么才能找到正确的方向

最佳答案

您也可以像这样使用子查询来做到这一点:

@pairs = Food.joins(:contents).where(contents: { compound_id:
@food.compounds.select(:id) })
然后你会得到类似这样的查询:

SELECT `foods`.* FROM `foods` INNER JOIN `contents` ON `contents`.`food_id` =
`foods`.`id` WHERE `contents`.`compound_id` IN(SELECT id FROM compounds WHERE
...)

如果您有很多 ID,这可能会提高性能。如果您使用 pluck 或 @food.compounds.ids 的 @food.compound_ids,您可以获得大量 ID 并将其传递给您的查询,这可能会变得非常慢。

关于sql - 具有多个记录的 Rails 复杂查询设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51757375/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com