轨道3:阿雷尔为NOT EXISTS? [英] Rails 3: Arel for NOT EXISTS?

查看:188
本文介绍了轨道3:阿雷尔为NOT EXISTS?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

你怎么写 NOT EXISTS 在阿雷尔?我有麻烦翻译此查询到阿雷尔:

  SELECT * FROM交易
WHERE NOT EXISTS(
   SELECT 1 FROM reward_deals
   WHERE reward_deals.deal_id = deal.id
   AND NOT(
      reward_deals.awarding_type =交易
      与reward_deals.deal_id = reward_deals.awarding_id
   )
 )
 

解决方案

下面就是答案,用奇怪的名字,因为我不知道怎么给名称的域对我来说未知。

 交易= Deal.arel_table
reward_deals = RewardDeal.arel_table
awarding_condition = reward_deals [:awarding_type] .EQ(交易)\
                                。而(reward_deals [:deal_id] \
                                       .EQ(reward_deals [:awarding_id]))

reward_deals_condition = reward_deals [:deal_id] .EQ(交易[:ID])\
                              。而(awarding_condition.not)
Deal.where(RewardDeal.where(reward_deals_condition).exists.not)
 

问候, 佩德罗

How do you write a NOT EXISTS in Arel? I'm having trouble translating this query into 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
   )
 )

解决方案

Here is the answer, with strange names because I don't know how to give names for a domain that is for me unkown.

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)

Greetings, Pedro

这篇关于轨道3:阿雷尔为NOT EXISTS?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆