我们如何在密码中做到这一点?
有n 个父母 p1, p2, p3.... pn和m 个孩子 c1, c2,c3... cm。
假设c1派生自 (child of) p1,p2 and p3并且c2派生自 (child of) p1, p2 and p3。
给定c1我们可以找到c2吗?(从与 c1 相同的父节点派生的节点)
一个子节点可以有 1...n 个父节点。
1390 次
1 回答
8
实际上,几周前我在这里问了一个非常相似的问题,然后我得到的答案也对你有用,只需稍作调整。
START c1=node(*), c2=node(*)
MATCH c1-[:ChildOf]->parent<-[:ChildOf]-c2
WITH c1, c2, count(parent) AS parentsFound
WHERE length(c1-[:ChildOf]->()) = parentsFound
AND length(c2-[:ChildOf]->()) = parentsFound
AND c1 <> c2
RETURN c1, c2
注意:大概你会有一个更好的方式来选择你的c1and 而c2不是使用node(*).
逐行查询的逻辑:
- 从所有孩子开始
c1,c2 - 查找和
parent共享的所有 sc1c2 parent统计找到的 shared 数量- 确保找到的 s 数与已找到的s
parent总数相匹配。parentc1 - 确保找到的 s 数与已找到的s
parent总数相匹配。parentc2 - (可选)不要费心将节点与自己进行比较
- 返回结果!
于 2013-03-15T19:33:30.833 回答