例如,我有2種型號:嵌套查詢
購買(belongs_to的:用戶) 用戶(的has_many:購買)
我要選擇的是至少有一個所有用戶採購。
在SQL我會寫這樣的:
SELECT * FROM `users` WHERE `id` IN (SELECT DISTINCT `buyer_id` FROM `purchases`)
還有一個問題:是否有覆蓋阿雷爾任何完整的文檔或書籍?
例如,我有2種型號:嵌套查詢
購買(belongs_to的:用戶) 用戶(的has_many:購買)
我要選擇的是至少有一個所有用戶採購。
在SQL我會寫這樣的:
SELECT * FROM `users` WHERE `id` IN (SELECT DISTINCT `buyer_id` FROM `purchases`)
還有一個問題:是否有覆蓋阿雷爾任何完整的文檔或書籍?
嗯,我想回答我的問題... :)
buyers=purchases.project(:buyer_id).group(purchases[:buyer_id]) #<-- all buyers
busers=users.where(users[:id].in(buyers)) #<--answer
Rails的指南有AREL真正優秀的文檔。
http://guides.rubyonrails.org/active_record_querying.html#conditions
Rails的API也是一些比較模糊的選項非常有用。我只是谷歌一個具體的術語「rails api」,它首先出現。
我不相信上面的代碼發出嵌套查詢。相反,它似乎會發出2個獨立的SQL查詢。您可能具有可比較的速度(取決於您對性能的擔憂程度),但通過2次往返服務器,它不能提供嵌套查詢的相同優勢。