2011-02-26 3 views
0

에 부정적인 조건 조인 작업을 수행 = 조인> : member_tags, : conditions => "태그가"숨김 "인 member_tag가없는 모든 회원)내가 두 가지 모델을 가지고는 레일

어떻게하면됩니까? 레일보다 SQL 질문 중 하나는 :

+0

을, 나는 액티브 그것을 표현하는 방법을 몰라 구문을 참조하십시오. –

+0

도와 주시겠습니까? 내 SQL 기술은 끔찍한 – MikeMarsian

답변

1
에 대한 SQL 쿼리

나는이 트릭을 할 수 있다고 생각 : 대답은 SQL (왼쪽 가입하고 널 (null)를 확인하거나, 'NOT IN` 하위 쿼리 쓰기)에서 간단하지만

select `members`.* 
from `members` 
LEFT JOIN `member_tags` 
ON `members`.id = `member_tags`.member_id 
where `members`.id NOT IN (select `members`.id 
from `members` 
LEFT JOIN `member_tags` 
ON `members`.id = `member_tags`.member_id 
where `member_tags`.tag = 'hidden' 
); 
+0

이것은 고맙습니다. – MikeMarsian

0

더 나은 아무것도 가지고 올 캔트하고 화재로이 그 일의 추한 방법이다 (N + 1) n은 회원

Member.all.select {|member| !(member.member_tags.map(&:tag).include? "hidden")} 
+0

이것은 "숨겨진"아닌 태그를 가진 모든 멤버를 반환하는 것 같습니다. 대신, 나는이 태그가 전혀없는 모든 회원을 원합니다. – MikeMarsian

+0

@ mike .. 나는 그것을 추천하지는 않지만 대답을 편집했습니다. – rubyprince

관련 문제