2015-06-05 27 views
0

当你给某人 X 东西 y表示一些价格永远 - 这就是所谓的 “”。但是,当你给某人 X 东西 y表示一些价格一段时间 - 这就是所谓的“租金”。当它的操作没有成本它被称为“目前”。返回node.name如果node2.parameter = 0

我想使用neo4j进行此操作。但我不想为每个交换类型创建单独的节点集,因为重点是要显示它是如何相同的,但操作名称取决于变量参数 - 成本时间

http://i.stack.imgur.com/ymy2L.png

CREATE 
(n:Person { name: "Seller" }), 
(b:Person { name: "Buyer" }), 
(ntt:Time { name: "Time", forever: 0}), 
(nt:Goods { name: "Goods" }), 
(nd:Price { name: "Price", zero: 0 }), 
(nd2:OperationName { name: "Sell" }), 
(nd3:OperationName { name: "Rent" }), 
(nd4:OperationName { name: "Gift" }), 
(b)-[:sold]->(nt), 
(b)-[:rented_out]->(nt), 
(b)-[:presented]->(nt) 
RETURN n,b,ntt,nt,nd, nd2, nd3, nd4 

如何返回OperationName.name: “礼品”如果价格

+0

你可以改变标题为更多的表达?基于它,最初我怀疑这个帖子只是一个垃圾邮件。 (其余的似乎大部分都没问题。) –

+0

是的,好的。我认为最后一句更适合标题 –

+2

如果货物和买方没有连接到价格,您不能查询价格。我认为你必须修改你的图形模型,并实际将Person/Goods/Price连接到OperationName节点。 –

回答

0

这是一个建议的简单模型。 A Transaction节点具有price属性和可选expires属性,由一个Person“提供”并且由另一个“接收”,并且与Goods项目相关联。

在这里,我创建2个样本数据:

CREATE 
    (a:Person { name: "A" })-[:PROVIDED]->(t:Transaction { price: 13997.95, expires: 1234567})-[:ITEM]->(:Goods { name: "Truck" }), 
    (b:Person { name: "B" })-[:RECEIVED]->(t), 
    (b)-[:PROVIDED]->(t2:Transaction { price: 0 })-[:ITEM]->(:Goods { name: "Candy" }), 
    (c:Person { name: "C" })-[:RECEIVED]->(t2); 

在这里,我倾倒了所有的交易信息 - 包括如果是存在(相对于购买),如果它是一个出租:

MATCH 
    (provider:Person) -[:PROVIDED]-> (t:Transaction) -[:ITEM]-> (goods:Goods), 
    (receiver:Person) -[:RECEIVED]-> (t) 
RETURN 
    t.price = 0 AS isPresent, t.expires IS NOT NULL AS isRental, provider.name, receiver.name, t.price, goods.name, t.expires; 

下面是结果:

+------------------------------------------------------------------------------------------+ 
| isPresent | isRental | provider.name | receiver.name | t.price | goods.name | t.expires | 
+------------------------------------------------------------------------------------------+ 
| false  | true  | "A"   | "B"   | 13997.95 | "Truck" | 1234567 | 
| true  | false | "B"   | "C"   | 0  | "Candy" |   | 
+------------------------------------------------------------------------------------------+ 

this console

+0

这是不可思议的。你有一个惊人的思想和密码的经验!)谢谢你。 –