2017-06-19 5 views
1

Ich versuche, eine Tabelle zu generieren, die den Namen des Absenders, den Namen des Empfängers und die Anzahl der Nachrichten vom Absender als Anzahl (falls vorhanden, sonst 0) mit neo4j CASE Konstrukt enthält aber ich bekomme nicht das beabsichtigte Ergebnis. Hier ist meine Abfrage:Neo4j einfach `CASE` Ausdruck

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 

Was mache ich hier falsch? Danke im Voraus!

+0

FYI, Sie können dies direkt im Ergebnis Teil verwenden: 'Größe ((e) - [r: Nachricht] -> (b)) AS Nachrichten' – logisima

Antwort

2

Ich glaube, dass Sie diese CASE WHEN nicht brauchen, um Ihr Ziel zu erreichen. Wenn Sie die count() von :Message Beziehungen zwischen e und b Knoten benötigen, können Sie einfach die Anzahl der es zurück:

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

Diese Abfrage Null in der COUNT(r) zurück, wenn keine Beziehung zwischen e und b Knoten vorhanden ist.

+0

Ich sehe..Danke, Bruno ... wirklich erstaunlich! – Ram

Verwandte Themen