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 zrequirement
s 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 danychSpó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.