2016-08-30 331 views
0

第二個查詢給出了一個customerkey列表。我希望在第一個查詢中使用該結果,只要我只想將客戶與列表中的鍵匹配即可。在SQL中有一個IN運算符。在Cypher中怎麼樣?Cypher「IN」運算符

MATCH (s:Sale)-[:ORDERED_BY]->(c:Customer) 
WHERE c.customerKey IN ****** 
RETURN c.name, SUM(s.orderQuantity) 


MATCH (s:Sale)-[:CUSTOMER]->(c:Customer) 
WITH SUM(s.orderQuantity) as qtt, c 
WHERE qtt>1 
RETURN c.customerKey 
+0

的'ORDERED_BY'和'CUSTOMER'關係看起來他們可能是多餘的。它們總是存在於同一個「銷售」和「客戶」節點之間嗎? – cybersam

回答

1

有一個IN運算符在列表上工作,並有一個COLLECT()命令將行更改爲列表。

這就是說,我認爲你根本不需要做這一步。你應該能夠合併這兩個查詢,只是使用從第二查詢得到的客戶反饋到第一個查詢,像這樣:

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)