2015-01-27 3 views
0

У меня есть 3 объекта, «Бар», «Официант», «Продукт», так как отношения «А» имеют отношение «один» к «Официанту» и то же самое от «Официант к продукту» ,Использование SUBQUERY с несколькими атрибутами

Мне нужно знать, какие бары обслуживают продукты с определенными атрибутами.

Субъект Im выборка является Bars, До сих пор я пытался:

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

Где получить

Допустима только одно соотношение toMany/manyToMany в коллекции подзапрос выражения

Если я попробую:

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

Два ANYs, я получаю ту же ошибку,

Допустим только одно соотношения toMany/manyToMany в подзапросе коллекции экспрессии

Какой правильный способ подзапроса для более чем одного атрибута?

спасибо.

Это модель: enter image description here

+0

Зачем вам нужны отношения toBar в вашем предикате? Вы сказали, что у вас уже есть множество официантов для определенного бара. –

+0

Извините, я не хочу, я хочу запросить бары, которые были поданы Продукты с этими качествами, я отредактирую – subharb

+0

Есть ли вероятность, что вы можете разместить пример проекта где-нибудь? К сожалению, настройка всего проекта с помощью модели Core Data и материала для тестирования - это боль. –

ответ

1

Вы можете сделать это путем вложения двух подзапрос положения вместе:

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]]; 

Или, (неопределенно) естественном языке: «извлечь все Bars с не- нулевое количество (Waiters с ненулевым числом (Products с обоими dateServed и dateConsumed больше, чем сегодня)) ".

+0

Отлично! Благодарю. Мне интересно, как будет синтаксис также фильтровать определенные значения официанта. Официанты, которые работали в 2 раза, а также обслуживали этот продукт. – subharb

+0

Как вы моделируете время работы официанта? Разве это отношение к многим? – pbasdf

+0

Нет, это атрибуты в объекте официанта. Waiter.startWork и Waiter.endWork. – subharb