相关疑难解决方法(0)

怎么做Arel中的"where exists"

你如何进行包含Arel中"where exists"的查询?例如,在这样的查询中,向所有供应商显示至少一个订单:

SELECT *
FROM suppliers
WHERE EXISTS
  (SELECT *
    FROM orders
    WHERE suppliers.supplier_id = orders.supplier_id);
Run Code Online (Sandbox Code Playgroud)

我在Arel文档http://rubydoc.info/gems/arel/2.0.7/Arel/Nodes/Exists中看到"存在",但我在使用它时遇到了麻烦.

ruby sql database arel ruby-on-rails-3

16
推荐指数
1
解决办法
5463
查看次数

Rails 3:Arel for NOT EXISTS?

你怎么写NOT EXISTSArel?我在将此查询转换为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
   )
 )
Run Code Online (Sandbox Code Playgroud)

activerecord ruby-on-rails arel ruby-on-rails-3

9
推荐指数
1
解决办法
4910
查看次数

ActiveRecord:find_by_sql并包含

我想使用find_by_sql并同时包含.

我使用find_by_sql因为我在里面写select以利用索引.如果我使用左连接,如何忽略索引.

但是,find_by_sql不返回ActiveRecord_Relation但返回Array对象,所以我不能写

like Model.find_by_sql("select * from (select * from table limit 10)table left join rel_table on ...").includes(:rel_table,...) .
Run Code Online (Sandbox Code Playgroud)

之后我可以运行两个查询和手工包含.有没有办法解决它作为一个SQL?

sql activerecord ruby-on-rails

4
推荐指数
1
解决办法
2006
查看次数