Znajdowanie węzłów, które mają wszystkich wspólnych pośredników

Tworzę system, w którym pasujemyorders dostaff. Koncepcyjnieorder jest prośbą o wykonanie pracy przez osobę, astaff to osoba, która może to zrobić. Naorder może mieć jeden lub więcejrequirements (tj. ograniczenia dotyczące tego, kto może wykonywać pracę), astaff może mieć jeszcze więcejrequirements (tj. kwalifikacje do wykonywania pracy).

Próbuję utworzyć bardziej szyfrowe zapytanie, które da mi wszystkostaff które mająwszystko zrequirements wymienione przez daneorder. Powiedział inaczej, staram się znaleźć wszystkostaff węzły powiązane z każdymrequirement węzeł powiązany z danymorder węzeł.Moje pytanie brzmi: jak utworzyć zapytanie szyfrowe, aby modelować logikę biznesową?

Jako przykład rozważ następujące przykładowe dane:

Widok obrazu moich przykładowych danychAlternatywnie, tutaj jestinteraktywna konsola dla moich danych

Spójrz nazamówienie: 1 węzeł. to marequires powiązanie z dwoma węzłami, oznaczoneRN iER IV. Innymi słowy, kolejność nr 1 wymaga od kandydatów uzyskania kwalifikacji RN i kwalifikacji IV ER. Tak się składa, że ​​członek personeluEvan (StaffId: 1) ma obie te kwalifikacje, więc powinien móc ubiegać się o tę pracę. Członek personeluTim ma JEDEN z tych wymagań, ale nie oba, więc nie powinien mieć możliwości ubiegania się o tę pracę. Do tego,zamówienie: 2 ma tylko jedno wymaganie, które oboje mają Evan i Tim, więc obaj powinni móc ubiegać się o tę pracę.

W istocie, gdybym miał zacząć od zamówienia nr 1, chciałbym odzyskać tylko Evana. Gdybym miał zacząć od zamówienia nr 2, chciałbym odzyskać Evana i Tima *.

Poniższe zapytanie jest w połowie drogi. Daje mi to wszystkie unikalne ścieżki z danego zamówienia do członka personelu na raz. Jednak nie sprawdza, czy ścieżka KAŻDEGO wymogu jest spełniona (co oznacza, że ​​obecnie działa tylko w przypadku zamówień, które mają tylko jedno wymaganie):

start o=node(2) 
match o-[:requires]->req<-[:hasRequirement]-s 
return o, req, s;

Więc jakie mam opcje? Czy mogę jakoś sprawdzić obecność nieznanej liczby pasujących relacji? Czy będę musiał modelować moje dane w inny sposób?

*Edytować: Popełniłem błąd podczas konfigurowania przykładowych danych.Tim powinien być związany zRN aby zakwalifikował się do zamówienia nr 2.

questionAnswers(2)

yourAnswerToTheQuestion