在另一个查询中使用一个查询值Neo4j CQL

时间:2015-10-03 15:02:59

标签: neo4j cypher

我正在努力建立顾客可以购买书籍的书店数据库。有标书Book,BookCategory,Customer,Invoice。我在发票和书籍之间使用关系INVOICEITEM。我在发票中添加了 netTotal 属性,以存储INVOICEITEM中与发票相关的图书的总和值。我试图获得与发票相关的书籍的总价值。

MATCH (n:Invoice {id:'inv001'})-[:INVOICEITEM]->m RETURN SUM(m.price)

我尝试使用此命令更改发票的netTotal propery。

MATCH (n:Invoice{ id: 'inv001' }) SET n.netTotal = ((n:Invoice {id:'inv001'})-[:INVOICEITEM]-> m RETURN SUM(m.price))

但它返回错误。我是neo4j的新手,谢谢你。

1 个答案:

答案 0 :(得分:2)

在Invoice节点上更新netTotal的查询应为:

MATCH (n:Invoice {id: 'inv001'})-[:INVOICEITEM]->(m:Book) 
WITH n, SUM(m.price) AS netTotal
SET n.netTotal = netTotal

使用Book语句计算WITH价格的总和,将该值与SET语句一起更新netTotal Invoice属性n。请注意,您还需要在n语句中指定WITH,以便通过查询引入该绑定变量。有关WITH声明here

的更多信息