2017-04-07 104 views
0

場景: graph image
李四已經額定2層的成分,這些成分的2碰巧屬於湯祕方,只有1到比薩餅。查詢應返回湯食譜,因爲這些成分的收視率平均爲> 5Neo4j的暗號建議

我有什麼: 我開始用下面的查詢:

MATCH(:主題{REF: 1} ) - [ir:INGREDIENT_RATING] - >(:Ingredients)< - [:HAS_INGREDIENT] - (r:Recipe) WHERE ir.value> 5 return r;

我想發生: 這將返回食譜,在某種成分具有高於等級5,但這並不考慮到該配方中的其它成分可以有由用戶給予較低評級。

所以我必須展開上面的查詢,但我有點無知從哪裏開始。

由於提前,

更新1: 基於@InverseFalcon我這來了,這給了我我所期望的結果:

MATCH(:主題{REF:「 (r) - [HAS_INGREDIENT] - >(k:Kitchen)
MATCH(r) - [HAS_INGREDIENT] - [ir:INGREDIENT_RATING] - >(i:Ingredient) - [:HAS_INGREDIENT] - (in:成分)
WITH r,k,in,sum(ir.value)AS sum
WHERE總和> 10
RETURN DISTINCT R,收集(在DISTINCT)AS成分,K作爲廚房,總和
ORDER BY總和DESC

第二匹配是因爲沒有它,它僅與一個返回成分評級,我需要所有人。

只有一個奇怪的是,我得到一個重複的結果,即使很難我使用r。

+0

我不確定你在問什麼。請提供一些數據示例以及您期望返回的內容。 – betseyb

+0

@betseyb我用圖像和更好的描述更新了場景。希望最好能夠理解我試圖完成的事情。 – Edwin

回答

0

聽起來像你需要avg()聚合函數來取多個值的平均值。這對你有用嗎?

MATCH (:Subject {ref: 1})-[ir:INGREDIENT_RATING]->(:Ingredient)<-[:HAS_INGREDIENT]-(r:Recipe) 
WITH r, avg(ir.value) as avg 
WHERE avg > 5 
RETURN r; 
+0

你的建議指出我正確的方向,並能夠構建一個基於給我我期望的結果的查詢。我相應地更新了我的帖子。只有,現在我得到了r的重複節點,即使我使用DISTINCT。 – Edwin

+0

這很奇怪。你的排是否完全一樣?如果是這樣,您可能需要檢查圖形中是否實際存在重複的配方節點。 – InverseFalcon

+0

發現它,我忘了一個食譜可以有多個廚房,所以解決的廚房收集是。 – Edwin