2017-11-27 1 views
2

Ich versuche, alle Städte zu ermitteln, die keinen direkten Flug zu BOM haben. Meine Abfrage sieht so aus, aber es sagt, dass ich einen Syntaxfehler mit nicht übereinstimmender Eingabe habe. " in der ersten Zeile. Wie subtrahiere ich alle Städte, die den Direktflug haben, von allen Abflugorten für alle Flüge nach BOM? Newcomer zu neo4j.neo4j Syntaxfehler bei der Verwendung von WHERE NOT IN

MATCH(n.source_airport_code) WHERE NOT IN (MATCH (n:Flight) 
WHERE n.destination_airport_code = "BOM" 
RETURN DISTINCT n.source_airport_code) 
+1

Es gibt mehrere Fehler in dieser Abfrage: 1. 'MATCH' kann nur Knoten und Beziehungen, nicht Eigenschaften. 2. Cypher unterstützt (noch) keine Unterabfragen –

+0

Ich sah, dass WHERE NOT IN eine Option war, oder dass collect() funktionieren könnte. Wie würde ich das machen, wenn Unterabfragen noch nicht unterstützt würden? – curious4cs

Antwort

1

Wie Gabor mitteilt, unterstützt Cypher keine Unterabfragen. Wenn ich Ihre Anforderung vollständig verstanden habe, können Sie Ihr Ziel erreichen, indem Sie zwei verschiedene MATCH s in Verbindung mit collect() Funktion und DISTINCT Operator tun. Versuchen Sie:

MATCH (n:Flight) 
WHERE n.destination_airport_code = "BOM" 
WITH collect(DISTINCT n.source_airport_code) as codes 
MATCH (n) WHERE NOT n.source_airport_code IN codes 
RETURN n 
Verwandte Themen