2014-09-15 6 views
1

학생과 그들이 지원 한 과정이있는 모델이 있습니다. 모든 학생들은 groupNumber를가집니다. 나는이 같은 과정을 지원하지만 이렇게 다른 groupNumber에서 모든 학생들을 취득하고자 할 때Neo4J : 반복 노드 피하기

그래서 :

:

이 작동
MATCH (s1:Student)-[:Assisted]-(c:Course), (s2:Student)-[:Assisted]-(c) 
WHERE s1.groupNumber <> s2.groupNumber 
RETURN s1, s2 

그러나이 나에게 이런 일을 보여줍니다

Paul | Steve 
Steve | Paul 
Carl |Steve 
Steve | Mark 

반복되는 학생을 피하는 간단한 방법이 있습니까?

+0

동일한 그룹을 지원하는 동일한 그룹의 학생 노드가 여러 개 있다고 가정합니다. 해당 그룹의 단일 무작위 학생이 결과에 포함될 예정입니까, 아니면 해당 그룹의 학생이없는 것으로 간주됩니까? – cybersam

+0

나는 동일한 과목을 도왔지만 groupNumber가 다른 학생들을 받아야합니다. 쿼리는 괜찮습니다. 필요한 것은 중복을 피하는 방법입니다. –

답변

1

당신은 거의 그것을 가지고 - 또 하나의 절 추가 : 일치하는이 두 번 발생하기 때문에 결과가 반복되는 것처럼 그것은 보인다

MATCH (s1:Student)-[:Assisted]-(c:Course), (s2:Student)-[:Assisted]-(c) 
WHERE s1.groupNumber <> s2.groupNumber AND 
s1.groupNumber < s2.groupNumber 
RETURN s1, s2 

을; 한 번은 한 번에, 다른 번에는 다른 번에. 하나의 groupNumber이 다른 것보다 작아야한다고 말하면 단 하나의 순서 만 가능합니다. 예를 들어 Paul | Steve이 가능하지만 Steve | Paul은 그렇지 않습니다.