2016-10-13 16 views
0

私はNeo4J Cipherの新機能ですが、SQLで取得したいものを知っていますが、Cipherでクエリを作成することはできません。SQL外部結合とNeo4J暗号

Pers(persId,name,workId,born) 
Work(workId,name) 
Friend(pers1Id,pers2Id) 

問題: 同じ会社で働く人々を見つけ、友人ではなく、年齢差があまりthan5ある

はのは、3つのテーブルを持ってみましょう。何のNeo4j暗号について

select * from Pers p1 join Pers p2 on p1.workId=p2.workId 
where not exists 
(select 1 from Friend f where p1.persId in (f.person1Id,f.person2Id) 
and p2.persId in (f.person1Id,f.person2Id)) 
and abs(p1.born-p2.born)<5 

:SQLで は、単純なクエリは以下のように見えますか? 特にSQLをCipherクエリーに変換する方法については、何か助けてください。 Mirek

+0

それはあなたがそうしようとしたものを含めることができます:紙は、ピアレビュー中ですが、それはあなたが関係代数とサイファーとの間の接続を理解するのに役立ちます - 私はちょうどテーマに学術論文を終え

たとえうまくいかなくても – InverseFalcon

答えて

0

PersonとWorkplaceのラベルがあるとします。のは、関係のこれらの種類を想定してみましょうすでに存在している:

(:Person)-[:WorksAt]->(:Workplace) 
(:Person)-[:FriendsWith]->(:Person) 

あなたのサイファークエリは次のようになります。

MATCH (p1:Person)-[:WorksAt]->()<-[:WorksAt]-(p2:Person) 
WHERE NOT (p1)-[:FriendsWith]-(p2) 
AND abs(p1.born-p2.born) < 5 
RETURN p1, p2 

ものの順番を入れ替えて、私は(あなたがペアごとに2つの行を取得すると思う心に留めておきます私たちはあなたがする必要がある場合はそれほど問題なく)を排除することができます。

一般的には、パターンやクエリの図を描くことをお勧めします。そこから、それをCypherに変換するのは難しくありません。

関連する問題