【问题标题】:Rails 3: Arel for NOT EXISTS?Rails 3:Arel for NOT EXISTS?
【发布时间】:2011-11-01 10:02:50
【问题描述】:

您如何在 Arel 中编写 NOT EXISTS?我无法将此查询转换为 Arel:

SELECT * FROM deals 
WHERE NOT EXISTS (
   SELECT 1 FROM reward_deals 
   WHERE reward_deals.deal_id = deal.id 
   AND NOT (
      reward_deals.awarding_type = 'deal' 
      AND reward_deals.deal_id = reward_deals.awarding_id
   )
 )

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 activerecord arel


    【解决方案1】:

    这是答案,名字很奇怪,因为我不知道如何为我不知道的域命名。

    deals = Deal.arel_table
    reward_deals = RewardDeal.arel_table
    awarding_condition= reward_deals[:awarding_type].eq('deal')\
                                    .and(reward_deals[:deal_id]\
                                           .eq(reward_deals[:awarding_id]))
    
    reward_deals_condition= reward_deals[:deal_id].eq(deals[:id])\
                                  .and(awarding_condition.not)
    Deal.where(RewardDeal.where(reward_deals_condition).exists.not)
    

    【讨论】:

    • 不过,我的回答是回答你的问题,我的假设是正确的。你为什么不把我的答案标记为正确?!
    • 必须自己尝试一下,然后才能将其作为答案。看起来这样就行了。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2012-01-19
    • 2012-03-28
    • 1970-01-01
    • 2015-02-17
    • 1970-01-01
    • 2011-05-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多