簡體   English   中英

Neo4J:在Cypher中來回連接

[英]Neo4J: Joining back and forth in Cypher

我在Neo4J DB(Northwind DB)中具有以下節點:

  • Customer
  • Order
  • Product

節點具有以下關系:
(c:Customer)-->(o:Order)--> (p:Product)

我怎樣才能獲得的Products ,產品的數量,已經由購買Customers ,誰也買了Productpr_ID = 2?

我嘗試了以下查詢。 它返回正確的項目,但計數錯誤:

MATCH (p:Product)<--(o:Order)<--(c:Customer) 
WITH p,o,c WHERE p.productID='2' 
MATCH c-->(od:Order)-->(pr:Product) 
WITH c,od,pr WHERE NOT pr.productID='2' 
RETURN pr.productName, count(pr.productName)

您需要先過濾產品ID,然后再將其傳遞給WITH:

MATCH (c:Customer)-->(o:Order)-->(p:Product {productId: '2'})
MATCH (c)-->(:Order)-->(p2:Product)
WHERE p2 <> p
RETURN p2.productName, count(*) as c

我的查詢不起作用的原因是,我使用了count(pr.productName)而不是count(DISTINCT od)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM