我正在尝试为我的数据库中的每个属性返回最近的属性事务的地址,以及事务的一些细节。每个属性只能有一个地址,但每个地址可能有多个事务。所以我想要每个房产的最新交易。
此查询仅返回最近一次交易的地址
MATCH (:Property)<-[:ADDRESS_OF]-(a:Address)<-[:PROPERTY_TRANSACTION]-(p:Transaction_details)
return a.id, a.address_line_1, a.address_line_2, a.address_line_3, a.postcode, max(p.purchase_date)
order by a.id
但如果我想包含一些像这样的交易细节
MATCH (:Property)<-[:ADDRESS_OF]-(a:Address)<-[:PROPERTY_TRANSACTION]-(td:Transaction_details)
return a.id, a.address_line_1, a.address_line_2, a.address_line_3, a.postcode, max(td.purchase_date), td.purchase_price, td.lease_type
order by a.id
我获得了为每个地址返回的所有交易。
有没有办法返回最近一次交易的交易详情,以及地址详情?
答案 0 :(得分:1)
您可以获取给定属性的最新purchase_date
,然后将其用作以下查询中的参数:
MATCH (:Poperty{id:"abc123"})<-[:ADDRESS_OF]-(:Address)<-[:PROPERTY_TRANSACTION]-(td:Transaction_details)
// get the most recent purchase_date
WITH max(td.purchase_date) AS purchase_date
MATCH (:Poperty{id:"abc123"})<-[:ADDRESS_OF]-(a:Address)<-[:PROPERTY_TRANSACTION]-(td:Transaction_details {purchase_date : purchase_date})
return a.id, a.address_line_1, a.address_line_2, a.address_line_3, a.postcode, td.purchase_date, td.purchase_price, td.lease_type
order by a.id
答案 1 :(得分:1)
这个简单的查询应该会为您提供上次购买的信息:
jmp $
查询通过降序IP
对结果进行排序,并返回一个结果行(最新日期)。
顺便说一句,我使用了标签MATCH (:Property{id:"abc123"})<-[:ADDRESS_OF]-(a:Address)<-[:PROPERTY_TRANSACTION]-(p:Transaction_details)
RETURN a.id, a.address_line_1, a.address_line_2, a.address_line_3, a.postcode, p.purchase_date, p.purchase_price, p.lease_type
ORDER BY p.purchase_date DESC
LIMIT 1;
而不是purchase_date
,这似乎是一个错字。