activerecord эквивалентен SQL 'минус' - PullRequest
4 голосов
/ 07 августа 2010

Какой способ вычесть результат запроса из другого?Пример SQL для конкретной базы данных:

SELECT Date FROM Store_Information
MINUS
SELECT Date FROM Internet_Sales 

Ответы [ 2 ]

4 голосов
/ 07 августа 2010

Я добавлю это в смесь - не решение, но может помочь с прогрессом:

Лучшее, что я могу придумать, это использовать 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!НТН.

0 голосов
/ 19 апреля 2018

Поздний ответ, но я думаю, что вы имели в виду:

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, поэтому все, что выходит за рамки этой версии, должно сработать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...