Так что это идеальный случай, когда у вас могут быть дополнительные связи / отношения, которые могут быть или не быть там.
Традиционно вы можете обратиться к UNION, чтобы сделать это, но у нас на самом деле есть статья базы знанийна альтернативах запросам UNION , которые предоставляют другую опцию, где мы используем отношение переменной длины с нижней границей 0, что означает, что мы можем сопоставлять пути, где это отношение даже не существует в шаблоне.
В вашем случае использование будет выглядеть так:
MATCH (p:Person)-->(l:Event), (o:Org)<-[:PART_OF*0..1]-()<-[:WORKS_AT]-(p:Person)
WHERE (l.name="course a1" OR l.name="course a2")
AND o.name="University A"
RETURN o.name, count(DISTINCT(p))