我们如何在密码中做到这一点?
有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
注意:大概你会有一个更好的方式来选择你的c1
and 而c2
不是使用node(*)
.
逐行查询的逻辑:
- 从所有孩子开始
c1
,c2
- 查找和
parent
共享的所有 sc1
c2
parent
统计找到的 shared 数量- 确保找到的 s 数与已找到的s
parent
总数相匹配。parent
c1
- 确保找到的 s 数与已找到的s
parent
总数相匹配。parent
c2
- (可选)不要费心将节点与自己进行比较
- 返回结果!
于 2013-03-15T19:33:30.833 回答