【发布时间】:2023-01-20 21:45:20
【问题描述】:
我想知道参加 18 世纪荷兰共和国敌对天主教堂活动的人是否相互结婚。首先,我从在敌对教会受洗的人开始:
MATCH (p:person)-[:MARRIED_AT]-(m:marriage)-[:MARRIED_AT]-(pp:person)
WHERE (p)-[:BAPTISED_AT]-(:event:baptism)--(:church:Church_of_Utrecht) AND (pp)-[:BAPTISED_AT]-(:event:baptism)--(:church:Roman_Catholic_Church)
然而,可能是在洗礼之后和结婚之前,人们参加了敌对教会的活动,所以我需要排除这种可能性。这可以通过 WHERE NOT 语句来完成:
MATCH (p:person)-[:MARRIED_AT]-(m:marriage)-[:MARRIED_AT]-(pp:person)
WHERE (p)-[:BAPTISED_AT]-(:event:baptism)--(:church:Church_of_Utrecht) AND (pp)-[:BAPTISED_AT]-(:event:baptism)--(:church:Roman_Catholic_Church)
MATCH (p), (pp)
WHERE NOT (p)--(e:event)--(:church:Roman_Catholic_Church), (pp)--(ee:event)--(:church:Church_of_Utrecht)
然而,在这里,我卡住了,因为我需要指定 p 和 pp(e 和 ee)参与的事件发生在结婚年份(m)之前。这可以通过 WHERE 语句来完成:
WHERE e.Event_year > m.Event_year, ee.Event_year > m.Event_year
但是,我不知道如何将所有内容连接在一起并创建一个查询来为我执行此操作。
【问题讨论】:
-
为什么需要第二个 MATCH+WHERE?你不能用
AND扩展你的WHERE(然后简单地连接最后一个WHERE)吗?