2016-08-30 5 views
0

Die zweite Abfrage gibt eine Liste der customerkeys. Ich möchte, dass dieses Ergebnis bei der ersten Abfrage verwendet wird, solange ich nur die Kunden mit den Schlüsseln in dieser Liste abgleichen möchte. In SQL gibt es einen IN-Operator. Was ist mit Cypher?Cypher "IN" -Operator

+0

Die 'ORDERED_BY' und' CUSTOMER' Beziehungen scheinen, wie sie überflüssig sein könnte. Existieren sie immer zusammen zwischen den Knoten "Verkauf" und "Kunde"? – cybersam

Antwort

1

Es gibt einen IN-Operator, der auf Listen funktioniert, und es gibt einen COLLECT() - Befehl, der Zeilen in eine Liste ändert.

Das sagte, ich glaube nicht, dass Sie diesen Schritt überhaupt tun müssen. Sie sollten die zwei Abfragen kombinieren können, und verwenden Sie nur die Kunden aus der zweiten Abfrage resultierende in die erste Abfrage wie so zu ernähren:

MATCH (s:Sale)-[:CUSTOMER]->(c:Customer) 
WITH SUM(s.orderQuantity) as qtt, c 
WHERE qtt>1 
// now pass the filtered list of customers to the first query 
// no need to do any additional filtering or even deal with customerKey 
WITH c 
MATCH (s:Sale)-[:ORDERED_BY]->(c) 
RETURN c.name, SUM(s.orderQuantity)