我的 Rails 应用程序中有三个 Tables 用户 user_groups 和 user_groups_users。现在,我编写了一个 SQL 查询
SELECT user_group_id FROM user_groups_users GROUP BY user_group_id HAVING SUM(CASE WHEN user_id IN (1,4) THEN 1 ELSE 0 END) = COUNT(*)
提取那些 user_group_id,它恰好具有输入提供的 user_ids。在这种情况下,1,4 将作为 ruby 数组 [1,4] 提供。
现在,我想为我的 rails 应用程序编写这个 SQL 查询。但是,当我find_by_sql
在 rails 中使用语句执行此查询时,它会返回正确的编号。特定 user_id 所属的 user_groups,但结果不显示 user_group_id。
=> [#<UserGroup >, #<UserGroup >, #<UserGroup >, #<UserGroup >, #<UserGroup >, #<UserGroup >]
那么我如何从中提取 User_group_id 。
但是,当我通过直接连接到数据库来执行查询时。我得到了想要的结果
sql = "SELECT user_group_id FROM user_groups_users WHERE user_id IN (1,2) GROUP BY user_group_id HAVING Count(DISTINCT user_id) = 2;"
records_array = ActiveRecord::Base.connection.execute(sql)
但是,这里的问题是,我将如何使用字符串替换技术来使用作为输入的 user_ids。