0

Ruby on Rails 4 を使用して、この SQL クエリを Squeel または直接 Active Record で書き直すのに多くの問題があります。

実行前に、クエリ内の 3 つの数値すべてをクエリに渡す必要があります。SQL クエリは以下のとおりです。

SELECT "users".* 
FROM "users"  
WHERE "users"."id" 
IN (SELECT "users"."id" FROM "users"  
INNER JOIN marketing_assets ON users.id = marketing_assets.user_id 
WHERE  marketing_assets.marketing_platform_id= 3 
GROUP BY users.id HAVING COUNT(DISTINCT marketing_assets.marketing_platform_id) = 1)

Ruby on Railsのコントローラーでクラスメソッドをチェーンしようとするとエラーでどのように使用されているかについて詳しく知ることができます

4

2 に答える 2

0
marketing_assets_id = 3
limit_marketing_assets = 1
User.joins(:marketing_assets).where(:marketing_assets => {:marketing_platform_id => marketing_assets_id}).group(:users => :id).having("COUNT(DISTINCT marketing_assets.marketing_platform_id) = #{limit_marketing_assets}")
于 2014-02-02T11:29:47.850 に答える
0

これが、Squeel を使用して最終的に作成したクエリです。わたしにはできる。

User.where{users.id.in(User.joins{marketing_assets}
.where((['marketing_assets.marketing_platform_id = ?' ] * platforms.count)
.join(' OR '), *platforms).group{users.id}
.having{{marketing_assets => 
{COUNT(DISTINCT(marketing_assets.marketing_platform_id)) => platforms.count }}})}
于 2014-02-03T09:11:50.703 に答える