SQL查询
select * from zchildren where zparent = 3586 OR zparent in (Select zid from zchildren where zparent = 3586)
我在$SUBQUERY
尝试了一些案例,但我仍然没有取得任何成功。那我该怎么做呢?
更新
我的表名是儿童,父,其中包含相同表ID的ID,其中反向关系现在我想要父母的所有孩子是' 3586' 及其所有子孩子
的
我正在附加屏幕截图
现在几点
现在假设我有一个查询我想从儿童表中搜索标题为'医疗' 并且父母&#39 ; 3586' 现在,' 3586' 是来自表组的父ID我可以很容易地预测到这一点。
它给了我的父母' 3586' 的孩子,但我也想搜索子父的标题,这是子父ID的反身,意味着子孩子来自父母的孩子' 3586' 。
我真的需要这个解决方案。如果在这个问题中没有明确的话,我仍然可以更新我的问题。
答案 0 :(得分:2)
在处理有些复杂的核心数据问题时,您必须更准确一些。你的代码和你的变量名称都是草率的,并且有错误。
在SQL查询中,您有一个属性parent
(或“zparent”),但在Core Data模型中,它变为属性而不是关系。 (您是否正在考虑建模ID?这表明您仍然处于关系数据库思维中,并且还没有完全掌握对象图的概念。忘记关键并在关系中思考。)
您需要与children
建立反向关系,因此这不一定是相同的关系。调用实体“儿童”令人困惑,因为1)您使用复数形式作为单个对象,2)您将父母和子女称为“儿童”。您还将“儿童”拼错为“Childran”,可能会导致各种错误。
相反,我建议实体名称Person
。一个人可以拥有一个或多个parents
(或者只有一个?)和一个或多个children
,这两个Person
也属于Person - parents <<----------------->> children - Person
类型,从而产生多对多关系:
Person - parent <------------------->> children - Person
如果一个人只能拥有一个父母,那当然是多对一的关系。
Person
然后,您可以使用idNumber
3586获取id
(请注意,使用person.children
可能也是一个坏主意,因为它在某些上下文中是保留字)。然后,您可以非常简洁地访问该人的孩子:
{{1}}
这就是它的全部内容。