2010-11-05 264 views
1

例如,我有2种型号:嵌套查询

购买(belongs_to的:用户) 用户(的has_many:购买)

我要选择的是至少有一个所有用户采购。

在SQL我会写这样的:

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

还有一个问题:是否有覆盖阿雷尔任何完整的文档或书籍?

回答

2

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

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

我不相信上面的代码发出嵌套查询。相反,它似乎会发出2个独立的SQL查询。您可能具有可比较的速度(取决于您对性能的担忧程度),但通过2次往返服务器,它不能提供嵌套查询的相同优势。