【发布时间】:2013-11-07 17:26:45
【问题描述】:
我的数据库包含人员和事件作为节点。一个人可以 :KNOW 另一个人、:CREATE 或 :ATTEND 一个事件。
从查询人开始,我想收到我认识的人创建的所有事件的列表,参加活动的人数(如果有的话),以及我认识的参加此活动的人数(如果有的)。
所以我的结果应该是这样的:
活动 |计数(参加)|计数(参加的朋友)
事件 A 9 3
事件 B 3 0
事件 C 0 0
我得到事件和计数(参加)
START me=node(1)
MATCH (me)-[:KNOWS]-(creator)-[:CREATED]-(event), (Attender)-[?:ATTEND]-(event)
RETURN event, count(Attender)
[?:ATTEND] 是可选的,因为它会消除没有参加者的活动。
但是,我不知道如何查询我认识的有多少人参加了活动(也就是有多少朋友会参加)。
问题是,如果没有我认识的参加者,使用 Match 会消除找到的事件:
WITH n, event
MATCH (n)-[:KNOWS]-(friend)-[:ATTEND]-(event)
将这些关系设为可选并没有帮助,因为它要么返回所有参与者,要么返回所有朋友。
拆分查询会给我几个相同事件的列表。
如何在一个结果集中与正在参加的朋友一起举办有参加者和没有参加者的活动?
【问题讨论】: