2013-10-11 42 views
0

以下面的场景为例:当两个结果节点相同时合并密码查询的结果

医院节点与许多医生节点有关。医生节点与代表他们将患者转诊给其他医生时的其他医生有关。这些推荐可以是在不同医院的医生。医生之间的关系有一个名为计数的属性,表示医生已将患者转诊给第二位医生的次数。

我想要做的就是采取这些转诊关系,并从医院层面看。我的查询目前看起来像这样:

START hospital1 = Node:Hospitals("*:*") 
MATCH (hospital1)-[:CHILD_DOCTOR]->(doctor1)-[referral:REFERRED]-(doctor2)<-[:CHILD_DOCTOR]-(hospital2) 
WHERE hospital1 <> hospital2 
RETURN DISTINCT hospital1, hospital2, referral.count 

听起来很复杂,但查询非常简单。这是唯一的问题。假设A医院的两名医生将一名病人转诊给B医院的两名医生,最后我得到两个记录,医院1 = A医院,B医院2 = B医院。我想将这些结果合并在一起,并添加referral.count属性一起。有没有什么办法可以用Cypher来做到这一点?

回答

3

不知道我是否正确理解您的域。我的理解是,你在两家专断医院之间有很多路径(又称转诊),并且想总结一下。在这种情况下,使用

START hospital1 = Node:Hospitals("*:*") 
MATCH (hospital1)-[:CHILD_DOCTOR]->(doctor1)-[referral:REFERRED]-(doctor2)<-[:CHILD_DOCTOR]-(hospital2) 
WHERE hospital1 <> hospital2 
RETURN hospital1, hospital2, sum(referral.count) 

N.B.没有自己尝试查询。如需进一步讨论,请在http://console.neo4j.org上创建一个样本数据集。

+0

我简直不敢相信那很简单,谢谢! –