2016-09-01 3 views
0

ich den folgenden Beispielcode bin mit dem alle Details zu Benutzerdaten basierend bekommen zu haben geprüft Wert als 1 oder 0CASE alongwith MATCH IN Array in Neo4j cql

Hier Wo Anreise flight.checked 'nicht ist richtig abgestimmt Ist die Verwendung von 'CASE WHEN user.checked = 1 DANN [1,2] ELSE [1] END AS check' korrekt zusammen mit der Übereinstimmungserklärung?

Das Ergebnis, das ich bekomme, ist Benutzerdaten zusammen mit Nullwerten als Details.

MATCH (user:users) 
WITH user, CASE WHEN user.checked = 1 THEN [1,2] ELSE [1] END AS check 
OPTIONAL MATCH (user)-[:HAS_BOOKED]-(flight)-[:OF_TYPE]-(type)-[:HAS_PRICE]-(price:Fares) 
WHERE flight.checked IN check 
RETURN user, type, price, flight, check 

Antwort

0

Wenn kein Pfad der OPTIONAL MATCH übereinstimmt, werden Sie Nullwerte für alles außer user bekommen. Sind Sie sicher, dass dieser Teil korrekt ist, wenn Sie erwarten, dass Pfade gefunden werden?

Haben Sie versucht, eine hartcodierte Version der Abfrage mit Werten laufen bekannt, etwas zu passen, wie

MATCH (user:users {userId: 1}) 
OPTIONAL MATCH (user)-[:HAS_BOOKED]-(flight)-[:OF_TYPE]-(type)-[:HAS_PRICE]-(price:Fares) 
WHERE flight.checked IN [1, 2] 
RETURN user, type, price, flight 

zu sehen, ob es Spiel tut?

z. Hat der Flugtyp Preise? Das scheint ein bisschen aus.

+0

Der obige Code ist nur eine Beispielabfrage basierend auf der ursprünglichen Abfrage. Danke für die Antwort, ich habe die Prüfung innerhalb des Ergebnisses durchgeführt. – Jeevika