使用 WHERE 返回 Neo4j 问题中的堂兄弟
Returning cousins in Neo4j problem with WHERE
我必须进行一个 Cypher 查询,该查询应该是 return 一个人的堂兄弟(兄弟姐妹,brothers/sisters 的孩子)。它几乎可以正常工作,但问题是当我想过滤掉写 WHERE p2.personId<>27003
的人 (27003) (precious)
的孩子时,它也会删除人的母亲 (missing)
。
我做错了什么?
我的密码查询:
MATCH (p: Person_kol)<-[]-(parent: Person_kol) WHERE p.idPerson=27003
WITH p,parent
MATCH (p3: Person_kol)<-[]-(p2: Person_kol)<-[]-(parent: Person_kol)
WHERE p2.idPerson<>27003
RETURN p,parent,p3,p2
我的第一场比赛只是 return 给定 ID 的人 his/her parent。
第二个匹配只搜索brothers/sisters和his/her孩子(我知道p2也包括id=27003和his/her孩子的人,所以我想过滤他们out,但是我的“WHERE”也去掉了那个人的妈妈(第2张图)
图片:
- (没有 WHERE 子句)
- (带 WHERE)
您的第二个匹配子句要求 parent
有一个孙子 p3
,其 parent 不是 precious
。由于 missing
在满足该条件的第一张照片中没有任何孙子,因此她被从结果中过滤掉了。
如果你想包括 parents 而不管他们是否有符合条件的孙子,你可以做一个 optional match
.
MATCH (p: Person_kol)<--(parent: Person_kol) WHERE p.idPerson=27003
OPTIONAL MATCH (p3: Person_kol)<--(p2: Person_kol)<--(parent: Person_kol)
WHERE p2.idPerson<>27003
RETURN p,parent,p3,p2
我必须进行一个 Cypher 查询,该查询应该是 return 一个人的堂兄弟(兄弟姐妹,brothers/sisters 的孩子)。它几乎可以正常工作,但问题是当我想过滤掉写 WHERE p2.personId<>27003
的人 (27003) (precious)
的孩子时,它也会删除人的母亲 (missing)
。
我做错了什么?
我的密码查询:
MATCH (p: Person_kol)<-[]-(parent: Person_kol) WHERE p.idPerson=27003
WITH p,parent
MATCH (p3: Person_kol)<-[]-(p2: Person_kol)<-[]-(parent: Person_kol)
WHERE p2.idPerson<>27003
RETURN p,parent,p3,p2
我的第一场比赛只是 return 给定 ID 的人 his/her parent。
第二个匹配只搜索brothers/sisters和his/her孩子(我知道p2也包括id=27003和his/her孩子的人,所以我想过滤他们out,但是我的“WHERE”也去掉了那个人的妈妈(第2张图)
图片:
- (没有 WHERE 子句)
- (带 WHERE)
您的第二个匹配子句要求 parent
有一个孙子 p3
,其 parent 不是 precious
。由于 missing
在满足该条件的第一张照片中没有任何孙子,因此她被从结果中过滤掉了。
如果你想包括 parents 而不管他们是否有符合条件的孙子,你可以做一个 optional match
.
MATCH (p: Person_kol)<--(parent: Person_kol) WHERE p.idPerson=27003
OPTIONAL MATCH (p3: Person_kol)<--(p2: Person_kol)<--(parent: Person_kol)
WHERE p2.idPerson<>27003
RETURN p,parent,p3,p2