Neo4j를 사용하여 학교 프로젝트를 진행하고 있으며 문제가 발생했습니다. 지원을 한 모든 학생들에게 시험을 보거나 시험을 보거나 등록한 모든 학생을 ID 또는 색인 번호로 받아보고 싶습니다. 나는 학생과 과목을 속성 (학생) - [시험] - (학생) - [등록] - (시험)과 관계가있는 시험으로 연결했습니다. 아이디로 1 명의 학생이 필요합니다.이 학생과 1 명의 질문을 피험자와의 모든 연결이 필요합니다. 내가 사용Neo4j 다중 관계 쿼리
MERGE (std5:STUDENT { name:'Nola', surname:'Joan', indexnumber:12000, semester:'I' })
MERGE (std4:STUDENT { name:'Pola', surname:'Moan', indexnumber:12001, semester:'II' })
MERGE (sub1:SUBJECT { name:'Databases', semester:'VII' })
MERGE (sub2:SUBJECT { name:'Advanced Databases', semester:'VIII' })
MERGE (std5) - [ :EXAM { signed:' ' , mark:6 , date:'12.01.2017.' }] -> (sub1)//mark 6 is passing
MERGE (std4) - [ :EXAM { signed:' ' , mark:5 , date:'12.01.2017.' }] -> (sub1)
MERGE (std5) - [ :REGISTRATION {date:"2/11/2015", charge:0, term:'June'}] -> (sub1)
MERGE (std5) - [ :REGISTRATION {date:"2/11/2016", charge:0, term:'June'}] -> (sub1)
MERGE (std4) - [ :REGISTRATION {date:"2/11/2015", charge:0, term:'June'}] -> (sub2)
쿼리이 하나이지만, 나 데이터를 두 배로 제공하고 종종 잘못입니다 : 데이터베이스는 다음과 같습니다. 특정 학생이 각 시험에 대한 모든 시험과 등록을해야하기 때문에 시험에 응시 한 사람과 등록한 사람, 등록하지 않은 사람, 시험에 응시 한 적이없는 사람의 전체 목록을 얻을 수 있습니다. 그래서 요약, 학생이 중 하나를 등록 또는 시험, 또는 둘 모두로 연결되어
OPTIONAL MATCH (p:STUDENT) - [d:EXAM] - (c:SUBJECT)
WHERE p.indexnumber = 12000 and d.mark<5 //failing grade
WITH collect (distinct c) as c1,d
OPTIONAL MATCH (p:STUDENT) - [b11:EXAM] - (c:SUBJECT)
WHERE p.indexnumber = 12000
WITH p , count(c) as rels, collect(b11) as exams,d,collect(distinct c +c1) as c2
RETURN p, c2, d, rels , exams
, 나는 말했다에 대한 모든 관계를 얻을 필요가 인덱스 번호에 대한 학생. 그런 다음 모든 주체와의 관계를 계산하기 위해 학생이 몇 번이나 시험에 응시했는지에 대한 데이터가 상기 주제에 대한 관계 시험에 저장됩니다. 또한 마크 < 6 인 모든 학생들은 시험에 응시하지 못했습니다. 그래서 나는 많은 정보를 보유하고 있으며 그것을 관계에서 완전히 사용하려고합니다. 주제와 시험의 수를 곱하면 복잡성이 증가합니다.
오신 것을 환영합니다 스택 오버플로 및 감사에 예제 데이터 세트를 제공합니다. 몇 가지 제안 사항 : 1. 질문에 'cypher'태그를 추가하여 다른 사람들이 쉽게 찾을 수 있도록하십시오. 2. 예제의 날짜가 믹스 구문을 사용하고 있습니다. 3. 시험 실패 조건은 무엇입니까? 쿼리는'<5'를 포함하지만, 텍스트는'<6'을 제안합니다. –
1. 사이퍼 태그를 추가하는 방법을 살펴 보겠습니다. 2. 등급 시스템에서 6-10 점은 통과 표시이며, 누군가가 실패하면 6 점 미만으로 설정됩니다. 5는 통과하거나 실패했으면 표시하지 않거나 다른 것이없는 경우입니다. 3. 학생이 실패했거나하지 않았거나, 관계가 미리 설정되어 있습니다. 제가 원했던 것은 예를 들어, 어떤 학생이 말하기 힘든 학생인지, 그가 통과하려고 시도한 과목들, 그리고 그와 관련된 모든 데이터를 가지고 있는지를 보는 것입니다. 또한 예를 들어, 역행 질의에서 학생들이 가장 열심히 찾은 것을 볼 수 있습니다. 따라서 모든 관계를 볼 필요가 있습니다. – xacegod