Neo4jを使用して学校プロジェクトを行っていて、問題が発生しました。私は、申請したすべての生徒に試験を受けさせ、試験や登録をIDまたはインデックス番号で受け取りたいと思います。私は、学生(被験者) - [試験] - (被験者) - (登録) - (試験)との関係である受験生と被験者を接続しました。 私は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)
私が使用したクエリは、この1ですが、私は二重のデータを与え、多くの場合、それは間違っています。私は特定の学生がこれらの試験のすべての試験と登録を受ける必要があるので、試験に合格した者、登録した者、試験に合格しなかったかどうかの完全なリストを得ることができます。
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.私はcypherタグを追加する方法を調べます。 2.グレーディング・システムでは、6-10が合格マークであり、誰かが失敗した場合は6よりも低く設定されています.5が合格しなかった場合は失敗しました。 3.生徒は失敗したかしなかったか、事前に関係が設定されています。私が欲しかったのは、例えば、どの生徒がこの生徒にとって最も難しいか、彼が渡そうとした科目など、どのような科目を扱うか、そしてそのデータをすべて扱うかどうかなどを見て、見ることです。また、例えば逆の質問では、どの科目が最も難しいと感じるかなどを見ることができます。したがって、すべての関係を見る必要があります。 – xacegod