我只是neo4j的绿手,所以我想弄清楚的是如何获得同一年和同一个球员的球员。您可以看到以下代码:
MATCH (n:Player)-[r:APPEARANCE]->(t:Team)
WHERE t.team_id AND r.year =
(MATCH (n:Player {player_id: 'napolmi01'})-[r:APPEARANCE]->(t:Team))
RETURN t.team_id, r.year)
RETURN n.player_id, t.team_id, r.year
但这显然不是正确的答案,那么如何修改呢? 非常感谢!
答案 0 :(得分:1)
您尝试使用的代码使用Cypher尚未支持的子查询,但可以使用WITH
子句表示:
MATCH (:Player {player_id: 'napolmi01'})-[r1:APPEARANCE]->(t:Team)
WITH t, r1
MATCH (n:Player)-[r2:APPEARANCE {year: r1.year}]->(t)
RETURN n.player_id, t.team_id, r2.year
此外,由于不涉及聚合,您只需使用不带WITH
子句的查询:
MATCH (:Player {player_id: 'napolmi01'})-[r1:APPEARANCE]->(t:Team)
<-[r2:APPEARANCE]->(n:Player)
WHERE r1.year = r2.year
RETURN n.player_id, t.team_id, r1.year
更新。如果您有重复的结果,请使用RETURN DISTINCT n.player_id, t.team_id, r1.year