你如何进行包含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中看到"存在",但我在使用它时遇到了麻烦.
你怎么写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) 我想使用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?