遍历neo4j:结果已过滤

时间:2017-09-03 08:44:10

标签: neo4j

在零售商报告透视图中,您要报告文章的执行情况以及库存数量。 (非常简化)。

给定(子)结构:

(Product)-[HasStock]->(Stock)
(Product)-[InSale]->(Sale)

想象一下,我们有2个产品:

P1 = {Id= 1, Color=Black, Size=L}
P2 = {Id= 2 ,Color=Black, Size=M}

每个库存条目(库存){Quantity = 2}(也就是4个库存单位) 在Sale中我们有:

S1 = {Id= 1, Product= 1, Quantity=1}

如果我查询数据 P.Product,P.Color,P.Size,Sum(Stock.Quantity) as stockcount, Sum(Sale.Quantity) as sold 我总是只用P1产品得到一个结果,库存数量为2(而不是2个对象,总和(库存)= 4)....我需要的是Relational dbms的“外连接”机制。 .. 我该如何做到这一点?

(重新设计关系是可以的,但产品不是每天都在销售中,因此在空白关系的销售中添加额外的节点不是一种选择)。 (在1亿个节点上工作)。

同样地,我不想做笛卡尔积,因为它会破坏性能:(

1 个答案:

答案 0 :(得分:2)

  1. 很抱歉,您在评论中发布的查询很可能不是您的完整查询。你不会从销售中退回任何东西(在你提出的问题中)。
  2. 您的问题是您没有获得没有销售的产品的结果。匹配不起作用,因此没有结果......您可以通过可选匹配来解决这个问题。
  3. 那就是:

    OPTIONAL MATCH(p)--(sale:Sale)
    

    当没有销售时,您从销售处返回的任何字段都将具有空值。

    希望这有帮助。

    此致 汤姆