2015-01-27 3 views
0

"Bar", "Waiter", "Product"의 3 개의 엔티티가 있습니다. "Bar"는 Waiter와 1 대 다수 관계를 가지며 Waiter와 Product는 동일합니다 .여러 속성을 갖는 SUBQUERY 사용하기

어떤 특성을 가진 제품을 제공하고있는 바를 알아야합니다.

엔티티 임 페칭은 바, 지금까지 내가 해봤입니다 :

내가

만 하위 쿼리 표현 컬렉션에서 하나 toMany/manyToMany 관계를 허용 얻을

[NSPredicate predicateWithFormat:@"SUBQUERY(toWaiter, $x, ANY $x.toProduct.dateServed > %@ AND $x.toProduct.dateConsumed > %@)[email protected] > 0), [NSDate date], [NSDate date]]; 

시도한 경우 :

[NSPredicate predicateWithFormat:@"SUBQUERY(toWaiter, $x, ANY $x.toProduct.dateServed > %@ ANY AND $x.toProduct.dateConsumed > %@)[email protected] > 0), [NSDate date], [NSDate date]]; 

두 및 Any, 나는이 같은 오류를 얻을

하나 개 이상의 속성에 대한 하위 쿼리하는 올바른 방법은 하위 쿼리 표현 컬렉션에서 하나 toMany/manyToMany 관계를 허용?

감사합니다. (막연) 자연 언어,

NSPredicate *filter = [NSPredicate predicateWithFormat:@"SUBQUERY(toWaiter, $x, SUBQUERY($x.toProduct, $y, $y.dateServed > %@ AND $y.dateConsumed > %@)[email protected] > 0)[email protected] > 0", [NSDate date], [NSDate date]]; 

을 또는 : enter image description here

+0

왜 당신의 술어에'toBar' 관계가 필요합니까? 이미 특정 바에 대한 웨이터의 배열을 가지고 있다고하셨습니다. –

+0

죄송합니다. 제공 한 바를 쿼리하고 싶습니다. 해당 자질을 가진 제품을 바꿀 것입니다. – subharb

+0

어딘가에 예제 프로젝트를 게시 할 수 있습니까? 불행하게도 Core Data 모델로 전체 프로젝트를 설정하면 테스트하기가 쉽지 않습니다. –

답변

1

당신은 두 개의 하위 쿼리 절을 중첩하여이 작업을 수행 할 수 있습니다 : "비와 함께 모든 Bars를 가져

모델입니다 0이 아닌 수 ( ProductsdateServeddateConsumed이 오늘보다 큼)가 " Waiters"입니다.

+0

좋아요! 감사. 임씨는 특정 값의 웨이터로 필터링하는 구문이 어떻게 될지 궁금해합니다. Waiters는 2 번에 걸쳐 작업했으며 그 제품도 제공했습니다. – subharb

+0

웨이터가 일하는 시간을 어떻게 모델링합니까? 그것은 또 하나의 대다 관계입니까? – pbasdf

+0

아니요, 이것들은 웨이터 객체의 속성입니다. Waiter.startWork 및 Waiter.endWork. – subharb