쿼리 결과를 다른 것으로부터 빼는 방법은 무엇입니까? 데이터베이스 특정 SQL의 예는 다음과 같습니다SQL '마이너스'에 해당하는 activerecord
SELECT Date FROM Store_Information
MINUS
SELECT Date FROM Internet_Sales
쿼리 결과를 다른 것으로부터 빼는 방법은 무엇입니까? 데이터베이스 특정 SQL의 예는 다음과 같습니다SQL '마이너스'에 해당하는 activerecord
SELECT Date FROM Store_Information
MINUS
SELECT Date FROM Internet_Sales
내가 믹스에이 던질거야 -하지 솔루션,하지만 진행에 도움이 될 수 있습니다
이내가 생각할 수있는 베스트에없는 사용하는 것입니다 :
StoreInformation.where('date NOT IN (?)', InternetSale.all)
레일 3의 그 - 레일 2는 다음과 같습니다
StoreInformation.all(:conditions => ['date NOT IN(?)', InternetSale.all])
그러나이 두 가지가 먼저 선택됩니다 internet_sales의 모든 것; 정말로 원하는 것은 데이터베이스 엔진에서 모든 것을 수행하는 중첩 쿼리입니다. 이를 위해 find_by_sql을 중단하고 중첩 쿼리를 제공해야합니다.
물론 이것은 MySQL을 사용한다고 가정합니다. HTH.
흥미로운 질문은 다른 post-query에서 하나의 ActiveRecord 세트를 뺀 것과 관련이 있다고 생각합니다. –
IIRC :'MINUS'는 Oracle입니다. EXCEPT is ANSI –