"마지막 아이는 아이"인가 "아이가 아이인가"해야합니까? 마지막 자식에 대한
Parent.includes(:child).where("children.gender = 'boy' or parents.volunteer = 'yes'")
가 소년 : 이것은 후자의 작동 여기 당신이, 당신은 아마 작업을 진행이나 레일 구문을 사용하여 비슷한 만들 find_by_sql
를 사용할 수있는 SQL의 필요에 해당하는이 또는 Arel.
select p.* from parents p inner join
(select parent_id, gender from children where id in (select max(id) from children group by parent_id)) c
on c.parent_id = p.id where p.volunteer = 'Yes' OR c.gender = 'Boy';
이 쿼리를 실행 꽤 비싼 수 있습니다 데이터베이스의 크기에 따라 다른 해결책은 부모 레코드에 마지막 아이의 성별을 저장할 수 있으며, 업데이트 할 수있는 것이이 다른라면 새로운 아이가 추가 될 때마다 현재 부모가 가지고있는 성별.
불행히도, "마지막 아이는 소년"이 필요합니다. 그래서 나는 이것을하는 방법을 결정하는 그러한 투쟁을하고있다. – David
아무런 문제가 없지만 여전히 더 추한 쿼리 일뿐입니다. – iouri
그 더러운 쿼리는 무엇일까요? – David