gpt4 book ai didi

sql - 如何在 Ruby on Rails 中实现复杂的 SQL 查询?

转载 作者:行者123 更新时间:2023-12-04 14:17:57 24 4
gpt4 key购买 nike

我有四个表:“users”、“user_groups”、“groups”、“categories” ”。“users”和“groups”是通过“user_groups”的many_to_many 关系。“groups”和“categories”是many_to_one 关系。

我创建了以下 SQL 查询,但我不确定如何在 Ruby on Rails 中实现它:

SELECT u.*
FROM users u
WHERE EXISTS (SELECT 1
FROM user_groups ug,
groups g,
categories c
WHERE u.id = ug.user_id
AND ug.group_id = g.id
AND g.category_id = c.id
AND c.id in ('1, 2, 3'))

在不使用 Ruby on Rails 中的原始 SQL 的情况下实现它的最佳方法是什么?

最佳答案

我不太喜欢总是将复杂的查询翻译成 ActiveRecord 查询语言。相反,我认为用纯 SQL 编写复杂查询非常好,因为 SQL 通常更易于编写和理解。

也就是说,我认为这可能有效:

User.where(
id: UserGroup.select('user_groups.user_id')
.joins(groups: :categories)
.where(categories: { id: [1, 2, 3] })
)

关于sql - 如何在 Ruby on Rails 中实现复杂的 SQL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59541212/

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