У меня есть база данных, содержащая используемые стратегии в игре.Найти все узлы с равными отношениями
(strategy_1:Human) - [:BEATS] -> (strategy_1:Alien)
(strategy_2:Human) - [:BEATS] -> (strategy_1:Alien)
(strategy_3:Human) - [:LOSES] -> (strategy_1:Alien)
(strategy_4:Human) - [:DRAWS] -> (strategy_1:Alien)
(strategy_1:Human) - [:LOSES] -> (strategy_2:Alien)
(strategy_2:Human) - [:LOSES] -> (strategy_2:Alien)
(strategy_3:Human) - [:LOSES] -> (strategy_2:Alien)
(strategy_4:Human) - [:DRAWS] -> (strategy_2:Alien)
Таким образом, стратегия человека может БЫТЬ, РИСОВАТЬ ИЛИ ПОТЕРЯТЬСЯ против стратегии инопланетянина. Я пытаюсь найти все стратегии, которые имеют равные отношения, поэтому BEAT, DRAW или LOSE против тех же стратегий Alien.
В примерном случае это будет стратегия_1 и strategy_2. Сейчас я иду так:
MATCH (strategyA:Human)-[r1]->(strategyB:Alien)<-[r2]-(strategyC:Human)
WHERE type(r1) = type(r2) AND NOT strategyA = strategyC
RETURN strategyA
Но это, конечно же, даст мне все стратегии, по крайней мере, с одним соглашением. Как я могу сделать шаг, чтобы проверить все отношения стратегииA и strategyC друг против друга? Или есть гораздо более простой способ сделать это?
Эй, вот уже круто, но не совсем то, что я искал. Я пытаюсь найти все человеческие стратегии, которые равны друг другу, так что они выигрывают, проигрывают и рисуют против одних и тех же стратегий чужих. – Philiiiiiipp