gpt4 book ai didi

mysql - 通过has_many关系进行SQL/RoR ActiveRecord聚合查询

转载 作者:行者123 更新时间:2023-11-29 16:43:53 26 4
gpt4 key购买 nike

考虑以下因素:

  1. 家庭有_许多个 child (家庭 1:许多 child )
  2. Kid有一个枚举属性age_group,可以是婴儿、 child 、青少年或成人

我想创建几个范围:

  1. 选择所有有年龄组:婴儿 child 的家庭。这意味着,如果一个家庭有婴儿和 child ,则该家庭不符合此范围。

  2. 选择所有有婴儿和 child 的家庭,但没有青少年或成人。

其他范围是age_group ONLY child 、青少年、成人等。但我相信我可以按照与第一个范围相同的逻辑创建它。

最佳答案

我最终想出了这样的东西......

Family.find_by_sql("SELECT * FROM kids WHERE NOT EXISTS ( SELECT NULL FROM kids WHERE kids.family_id = family.id AND family.age_group != 'baby')")

在我有限的测试数据中,这似乎涵盖了所有只有婴儿的家庭。然而,我没有对此进行广泛的测试,因为它不可扩展。由于我必须使用 find_by_sql,因此我无法将其与其他调用或添加分页的 activerecord 链接起来。

我决定采取另一条路线,在家庭中创建一个 family_stage 列,并在 child 更新或添加到家庭时随时更新 family_stage。它使查询所有内容变得更加简单,并将处理放在更新一侧。

关于mysql - 通过has_many关系进行SQL/RoR ActiveRecord聚合查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53194268/

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