我創建中,我們匹配orders
到staff
系統節點。從概念上講,order
是要求人做某些工作,而staff
是能夠完成這項工作的人。一個order
可以有一個或多個requirements
(即對誰可以做的工作限制),以及staff
可以有一個更詳細requirements
(即資格做的工作)。找到具有所有常見的中介
我試圖創建一個暗號查詢,這將使我有所有staff
由給定order
列出的requirement
S的所有。換言之,我試圖找到與每個節點相關的每個requirement
節點相關的所有staff
節點。 我的問題是:我如何創建一個密碼查詢來建模業務邏輯?
作爲一個例子,考慮下面的示例數據:
看那訂單ID:1個節點。它有一個requires
關係到兩個節點,標記RN和ER IV。換句話說,訂單#1要求任何申請人具有RN資格和ER IV資格。恰巧,工作人員埃文(STAFFID是:1)同時具有這些資格,所以他應該能夠接受那份工作。工作人員蒂姆有這些要求之一,但不是兩個,所以他不應該能夠申請這項工作。此外,orderId:2只有一個要求,埃文和蒂姆都有,所以他們都應該能夠申請這項工作。
所以在本質上,如果我要開始爲了#1我想回去只埃文。如果我要開始訂購#2,我會想要找回埃文和蒂姆*。
以下查詢是在那裏的一半。它將一次給予我從給定訂單到工作人員所有要求的所有獨特路徑。但是,它不檢查每一個需求路徑的情況下(這意味着目前它只會訂單,只有有一個要求工作):
start o=node(2)
match o-[:requires]->req<-[:hasRequirement]-s
return o, req, s;
所以我有哪些選擇?我可以以某種方式檢查是否存在未知數量的匹配關係?或者我需要以不同的方式爲我的數據建模?
* 編輯:我設置我的樣本數據時犯了一個錯誤。 添應已隨RN關聯,以便他可以勝任訂單#2。
好,我在設置樣本數據時犯了一個錯誤。無論如何,你的答案完美無缺,斯蒂芬也是如此 - 我希望我能接受你的答案。我會選擇斯蒂芬的答案,僅僅是因爲它更簡潔一些,但也要感謝你的回答。 – ean5533
Stefan's好多了:-) – Luanne