2015-08-01 2 views
-1

SQL QueryНеобходимо преобразовать SQL-запрос в формате CoreData

select * from zchildren where zparent = 3586 OR zparent in (Select zid from zchildren where zparent = 3586) 

Я пытался несколько случаев с $SUBQUERY, но все же я не получаю никакого успеха. Итак, как я могу это достичь?

Update

У меня есть имя таблицы, которая является Дети который имеет Родитель, который содержит идентификатор той же таблицы ID, Сво Обратные отношения Теперь я хочу, чтобы все дети, которых материнская '3586' и его все суб дети

Update2

Я прилагаю снимок экрана

enter image description here

Теперь Мало больше очков

  1. Таблица Группа имеет отношение один ко многим с детьми
  2. Таблица Дети имеет два отношения
  3. Первое, что обращено к группе «один-к-одному»
  4. вторых детей отношение, которое является обратным к себе, которая называется Reflexive

Обновленный Вопрос

Теперь предположим, что у меня есть один запрос я хочу, чтобы найти детей таблицы, где название «Медицина» AND Parent is '3586' Теперь этот '3586' является родительским идентификатором, который поступает из таблицы Группа И я могу легко предикат это .

Проблема

Это дает мне детей, у которых родитель «3586», но я также хочу, чтобы искать в названии подразделам детей, которые Reflexive этого родителя ID, Средства суб-дети детей, которые вышли из родительский '3586'.

Мне действительно нужно это решение. Я все еще могу обновить свой вопрос, если кто-то не понял этого вопроса.

+1

Вы приближаетесь к этому с неправильного конца. Как определяются ваши сущности, каковы отношения между ними и какие вы пытаетесь достичь? –

+0

@MartinR я обновил свой ответ –

+0

Просьба показать определения подкласса управляемого объекта. –

ответ

2

При решении нескольких сложных проблем с основными данными вы действительно должны быть более точными. Ваш код и ваши имена переменных неряшливы и ошибочны.

В вашем запросе SQL у вас есть атрибут parent (или «zparent»), но в модели Core Data он становится атрибутом, а не отношением. (Возможно, вы думали о моделировании идентификаторов?Это означало бы, что вы все еще в ловушке мышления реляционной базы данных и еще не полностью поняли концепцию графа объектов. Забудьте об идентификаторах и подумайте об отношениях.)

Вам нужно обратное отношение к children, так что это не может быть одинаковое отношение. Вызов объекта «Дети» запутан, потому что 1) вы используете множественное число для единственного объекта и 2) вы вызываете как родителя, так и детей «Дети». Вы также ошибаетесь «Дети» как «Childran», что потенциально приводит ко всем видам ошибок.

Вместо этого позвольте мне предложить имя объекта Person. Человек может иметь один или несколько parents (или это только один?) И один или более children оба из которых являются также типа Person, в результате чего многие-ко-многим:

Person - parents <<----------------->> children - Person 

Если человек может иметь только одного родителя, если, конечно, отношения «много-к-одному».

Person - parent <------------------->> children - Person 

Вы можете получить бонус в Person с idNumber 3586 (обратите внимание, что при использовании id, возможно, также плохая идея, так как это зарезервированное слово в некоторых контекстах). Вы можете очень быстро получить доступ к этим детям:

person.children 

Это действительно все, что нужно.

+0

Прежде всего спасибо помощнику за то, что нашли время, чтобы заметить мою проблему. Во-вторых, имя поля Id происходит от json, поэтому я использую это для целей тестирования в другом примере. Теперь я знаю, что могу получить person.children от 3586, правда, но я также хочу искать в дочерних дочерних элементах. поэтому давайте скажем, если мой родительский идентификатор 3586 я могу получить своих детей, но я хочу искать в дочерях .. так как я могу это сделать? –

+0

Вы знаете, как написать цикл? – Mundi

+0

Да, я знаю, с рекурсивными циклами, я могу добиться этого, но с NSPredicate это возможно? –

Смежные вопросы