从另一个中减去查询结果的rails方法是什么?特定于数据库的SQL示例如下:
SELECT Date FROM Store_Information
MINUS
SELECT Date FROM Internet_Sales
答案 0 :(得分:4)
我会把它归入混合 - 不是解决方案,但可能有助于取得进展:
我能想到的最好是使用NOT IN:
StoreInformation.where('date NOT IN (?)', InternetSale.all)
那是Rails 3 - Rails 2将是:
StoreInformation.all(:conditions => ['date NOT IN(?)', InternetSale.all])
但这两个都将首先从internet_sales中选择一切;你真正想要的是一个嵌套查询来完成数据库引擎中的所有事情。为此,我认为你必须打破find_by_sql并给出一个嵌套查询。
显然这假设您正在使用MySQL! HTH。
答案 1 :(得分:-1)
迟到的答案,但我认为你的意思是:
activities = Activity.all
searches = activites.where(key: 'search')
(activites - searches).each do |anything_but_search|
p anything_but_search
end
你可以减去两个ActiveRecordsRelation并得到MINUS结果,就像SQL一样。
我正在使用Rails 4.2,因此除了该版本之外的任何东西都可以解决问题。