2013-07-03 25 views
-2

我必须将用sql编写的查询翻译成ruby(activeRecord/Linq),但我找不到正确的语法来完成它,请帮忙。在红宝石上嵌套查询的语法是什么?

我想知道在节日中完成这4项活动的唯一身份用户的数量。 sql查询如下:

`SELECT count(distinct user) FROM stats where festivalId='fest000' 
and user in (select user from stats where activity='checkins') 
and user in (select user from stats where activity='programs') 
and user in (select user from stats where activity='status') 
and user in (select user from stats where activity='pictureUpload');` 

我该如何设法做到这一点? 我在哪里可以找到至少类似的例子或良好的文档来弄清楚? 是否有可能使用一个常量“用户”,所以我可以做所有的查询,然后把它们放在一起或类似的东西?

我很绝望,我找不到解决方案,我不知道该怎么办......提前致谢!

回答

0

我想你需要找出其中具有festivalId='fest000'activity 'checkins' AND 'programs' AND 'status' AND'pictureUpload')不同的用户数

然后下面的查询应该工作

SELECT COUNT(*) FROM stats 
WHERE festivalId='fest000' AND activity IN ('checkins', 'programs', 'status','pictureUpload') 
GROUP BY user 
HAVING COUNT(DISTINCT activity) = 4 

而且你可以很容易地在红宝石转换这种查询方式过于

Stat.where("festivalId=? AND activity IN (?)", 'fest000', ['checkins', 'programs', 'status','pictureUpload']).group('user').having("COUNT(distinct activity) = 4").count 
+0

它salil!谢谢你的帮助! – user2542431