2013-07-03 52 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