2010-11-05 316 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次往返服務器,它不能提供嵌套查詢的相同優勢。