2010-08-07 3 views
4

쿼리 결과를 다른 것으로부터 빼는 방법은 무엇입니까? 데이터베이스 특정 SQL의 예는 다음과 같습니다SQL '마이너스'에 해당하는 activerecord

SELECT Date FROM Store_Information 
MINUS 
SELECT Date FROM Internet_Sales 
+2

IIRC :'MINUS'는 Oracle입니다. EXCEPT is ANSI –

답변

3

내가 믹스에이 던질거야 -하지 솔루션,하지만 진행에 도움이 될 수 있습니다

내가 생각할 수있는 베스트에없는 사용하는 것입니다 :

StoreInformation.where('date NOT IN (?)', InternetSale.all) 

레일 3의 그 - 레일 2는 다음과 같습니다

StoreInformation.all(:conditions => ['date NOT IN(?)', InternetSale.all]) 

그러나이 두 가지가 먼저 선택됩니다 internet_sales의 모든 것; 정말로 원하는 것은 데이터베이스 엔진에서 모든 것을 수행하는 중첩 쿼리입니다. 이를 위해 find_by_sql을 중단하고 중첩 쿼리를 제공해야합니다.

물론 이것은 MySQL을 사용한다고 가정합니다. HTH.

+0

흥미로운 질문은 다른 post-query에서 하나의 ActiveRecord 세트를 뺀 것과 관련이 있다고 생각합니다. –

관련 문제