我不知道如何将sql查询转换为ruby(嵌套选择)

我不知道如何将sql查询转换为ruby(嵌套选择),sql,ruby-on-rails,ruby,Sql,Ruby On Rails,Ruby,我必须在用RubyonRails编写的网页上显示一些数据库的静态。我知道我必须问数据库什么,但我不知道如何用ruby编写它 我们的目标是了解有多少用户在同一个节日上进行了这4项活动 我想转换为ruby的sql查询是: `SELECT count(distinct usermail) FROM stats where festivalId='2013' and usermail in (select usermail from stats where typeActivity='checkin

我必须在用RubyonRails编写的网页上显示一些数据库的静态。我知道我必须问数据库什么,但我不知道如何用ruby编写它

我们的目标是了解有多少用户在同一个节日上进行了这4项活动

我想转换为ruby的sql查询是:

`SELECT count(distinct usermail) FROM stats where festivalId='2013' 

and usermail in (select usermail from stats where typeActivity='checkins')

and usermail in (select usermail from stats where typeActivity='programs')

and usermail in (select usermail from stats where typeActivity='status')

and usermail in  (select usermail from stats where typeActivity='pictureUpload');
`
所以我的问题是,我不知道如何将这个选择嵌套到大的选择中。我曾尝试在控制器中编写类似的内容,但没有成功

 def self.countTotalActivity(appId)

    stats= Stat.where(:festivalId => appId).where(:typeActivity => ('checkins').where(:typeActivity => 'status'))

    return stats.count
  end
我一直潜伏在文档中,尝试不同的事情已经好几天了,但我没有取得任何进展

谢谢

试试这个

stats= Stat.select(:usermail).where(festivalId: 2013,typeActivity: ['checkins','status', 'programs', 'pictureUpload']).uniq.count
试着跟随

Stat.where("festivalId=? AND typeActivity IN (?)", '2013', ['checkins', 'programs', 'status','pictureUpload']).group('usermail').having("COUNT(DISTINCt typeActivity) = 4").count

您的SQL查询似乎没有产生您所说的应该产生的结果。看起来您应该有一个having counttypeActivity=4或类似的顺序。简而言之,您需要ruby查询SELECT countdistinct usermail FROM stats,其中festival alid='2013'和usermail在SELECT usermail FROM stats,其中typeActivity在'checkins','programs','status','pictureUpload'中;是的。所有子查询的结尾都必须有“and festival alid='2013'”对不起,我误读了你的问题,你想要的是所有“签入”、“程序”、“状态”、“图片发布”和“festival alid='2013'结尾都常见的电子邮件谢谢你的回答!但此查询将返回存在签入或状态或。。。但这不是我想要做的,也就是说:进行这4项活动的用户邮件数量见上面的查询。。。我需要知道如何语法,如何嵌套这个子查询…谢谢!!!