Sql 使用Arel(Rails3)的嵌套查询

Sql 使用Arel(Rails3)的嵌套查询,sql,ruby-on-rails,orm,nested,arel,Sql,Ruby On Rails,Orm,Nested,Arel,例如,我有两种型号: 购买(属于:用户) 用户(有很多:购买) 我想选择至少有一次购买的所有用户 在SQL中,我会这样写: SELECT * FROM `users` WHERE `id` IN (SELECT DISTINCT `buyer_id` FROM `purchases`) 还有一个问题:有没有关于阿雷尔的完整文档或书籍?嗯,我想回答我的问题…:) buyer=purchases.project(:buyer_id).group(purchases[:buyer_id])。Rai

例如,我有两种型号:

购买(属于:用户) 用户(有很多:购买)

我想选择至少有一次购买的所有用户

在SQL中,我会这样写:

SELECT * FROM `users` WHERE `id` IN (SELECT DISTINCT `buyer_id` FROM  `purchases`)

还有一个问题:有没有关于阿雷尔的完整文档或书籍?

嗯,我想回答我的问题…:)


buyer=purchases.project(:buyer_id).group(purchases[:buyer_id])。Rails指南为ARel提供了非常好的文档


Rails API对于一些比较模糊的选项也非常有用。我只是用“rails api”搜索了一个特定的术语,它首先出现。

我不相信上面的代码会发出嵌套查询。相反,它似乎会发出两个单独的SQL查询。您可能有相当的速度(取决于您对性能的关注程度),但对于服务器的两次往返,它不能提供嵌套查询的相同好处

buyers=purchases.project(:buyer_id).group(purchases[:buyer_id]) #<-- all buyers
busers=users.where(users[:id].in(buyers))  #<--answer