2014-05-13 114 views
0

我有標記爲「組」的節點,只有其中一些與人有關係。牛逼在一個查詢中單獨匹配

GroupA {}, GroupB{personA, personB}, GroupC{} 

我想所有的羣體和具有分配給他們組成員,但我只能想出獲得組,成員

Match (:Client {value:'1234'})-[:IDENTIFIES]->(a)<-[r:PART_OF*]-(b:Group) 
<-[:BELONGS_TO]-(per:Person) 

即使我把單獨的匹配與聯盟我無法獲得空白組和人員組。它說列名必須相同。我可能做錯了什麼。

任何幫助?謝謝!!

+0

請將您的完整查詢添加到union子句中。在使用聯合的兩個語句中返回的列必須相同。 –

回答

1

該查詢應該做你想要什麼。如果b組沒有Person屬於它,結果行中的per值將爲null。你可以玩這個查詢using this console link

MATCH (:Client {value:'1234'})-[:IDENTIFIES]->(a)<-[r:PART_OF*]-(b:Group) 
OPTIONAL MATCH (b)<-[:BELONGS_TO]-(per:Person) 
RETURN DISTINCT a, b, per; 
+0

這樣做!謝謝。 :) – KoalaD

1
MATCH (c:Client {value: 1234})-[:IDENTIFIES]->(a)<-[r:PART_OF*]-(b:Group)<-[:BELONGS_TO]-    (per:Person), (g:Group) 
RETURN per, b, g 

這是假設您可以在顯示的組中重複顯示結果。這也取決於您希望返回/顯示結果的方式(例如,您可能想要使用COLLECT)。當每行包含所有組時,遍歷「成員」結果可能有點不方便。

如果你只想空組,也許你可以試試:

MATCH (g:Group) 
WHERE NOT g--() 
RETURN g 
+0

謝謝你的答案。你的查詢確實獲得了我所需要的所有信息,但是我需要獲得屬於該特定客戶端的組,並對重複進行排序的次數相當多,並且@cybersam使用「可選匹配」給出的答案完成了這個任務。謝謝。 – KoalaD

+0

很高興,他幫助。我不確定數據模型是否與組和客戶相關,以及所有組的關係有關。我也不確定「客戶」是什麼,因爲它出現在您原來的Cypher聲明中,但不在問題描述中。未來好運。 – BtySgtMajor

+0

我會盡力在下次更詳細地詢問查詢。基本上我們在graphdb中有多個客戶端,我們通過它們的父Id(客戶端)區分圖的集羣,並且擁有屬於該客戶端的組以及屬於這些組的客戶中的人員。希望這是有道理的。哈哈。 – KoalaD

相關問題