2017-06-19 90 views
1

我試圖以產生包含發送者的名稱的表,在接收器和發送方作爲計數發送的消息的數量的名稱(如果有的話,否則爲0),使用的Neo4j CASE構建體但我沒有得到預期的結果。這是我的查詢:Neo4j的簡單`CASE`表達

MATCH(e:Employee{key:1}),(b:Employee), 
OPTIONAL MATCH (e)-[r:Message]->(b) 
RETURN e.name, DISTINCT b.name, 
CASE 
WHEN (e)-[r:Message]->(b) 
THEN COUNT(r) 
ELSE 0 END AS Messages 

我在做什麼錯在這裏?提前致謝!

+0

僅供參考,您可以直接在結果部分使用:'尺寸((E) - [R:信息] - >(b)項)Messages' – logisima

回答

2

我相信你不需要這個CASE WHEN來實現你的目標。如果你需要eb節點之間的:Messagecount()關係中,你可以簡單地返回它的計數:

MATCH(e:Employee{key:1}),(b:Employee) 
OPTIONAL MATCH (e)-[r:Message]->(b) 
RETURN DISTINCT e.name, b.name, COUNT(r) as Messages 

這個查詢將在COUNT(r)如果沒有關係存在的節點eb之間返回零。

+0

我see..Thank你布魯諾......真是太神奇了! – Ram