SQL 外连接与 Neo4J 密码
SQL outer join vs Neo4J Cipher
我是 Neo4J Cipher 的新手,我知道我想在 SQL 中得到什么,但无法在 Cipher 中创建查询。
让我们有 3 个表:
Pers(persId,name,workId,born)
Work(workId,name)
Friend(pers1Id,pers2Id)
问题:
找人,在同一家公司工作,不是朋友,年龄相差小于5。
在 SQL 中,一个简单的查询如下所示:
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
Neo4J Cipher 怎么样?
任何帮助将不胜感激,尤其是如何将 SQL 转换为 Cipher 查询。
米雷克
假设您有 :Person 和 :Workplace 标签。让我们假设这些类型的关系已经存在:
(:Person)-[:WorksAt]->(:Workplace)
(:Person)-[:FriendsWith]->(:Person)
您的 Cypher 查询类似于:
MATCH (p1:Person)-[:WorksAt]->()<-[:WorksAt]-(p2:Person)
WHERE NOT (p1)-[:FriendsWith]-(p2)
AND abs(p1.born-p2.born) < 5
RETURN p1, p2
不过请记住,我认为您会在每对中得到两行,并切换顺序(如果需要,我们可以毫不费力地消除它)。
一般来说,画出模式或查询的图表是个好主意,从那里通常不难将其转换为 Cypher。
如 InverseFalcon 的回答所示,您可以使用 WHERE NOT <pattern>
构造来表达反连接(有时称为左反半连接)操作。
我刚刚完成了一篇关于该主题的学术论文 - 该论文目前正在接受同行评审,但它可以帮助您理解关系代数和 Cypher 之间的联系:http://docs.inf.mit.bme.hu/ingraph/pub/btw2017-opencypher.pdf
我是 Neo4J Cipher 的新手,我知道我想在 SQL 中得到什么,但无法在 Cipher 中创建查询。
让我们有 3 个表:
Pers(persId,name,workId,born)
Work(workId,name)
Friend(pers1Id,pers2Id)
问题: 找人,在同一家公司工作,不是朋友,年龄相差小于5。 在 SQL 中,一个简单的查询如下所示:
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
Neo4J Cipher 怎么样? 任何帮助将不胜感激,尤其是如何将 SQL 转换为 Cipher 查询。 米雷克
假设您有 :Person 和 :Workplace 标签。让我们假设这些类型的关系已经存在:
(:Person)-[:WorksAt]->(:Workplace)
(:Person)-[:FriendsWith]->(:Person)
您的 Cypher 查询类似于:
MATCH (p1:Person)-[:WorksAt]->()<-[:WorksAt]-(p2:Person)
WHERE NOT (p1)-[:FriendsWith]-(p2)
AND abs(p1.born-p2.born) < 5
RETURN p1, p2
不过请记住,我认为您会在每对中得到两行,并切换顺序(如果需要,我们可以毫不费力地消除它)。
一般来说,画出模式或查询的图表是个好主意,从那里通常不难将其转换为 Cypher。
如 InverseFalcon 的回答所示,您可以使用 WHERE NOT <pattern>
构造来表达反连接(有时称为左反半连接)操作。
我刚刚完成了一篇关于该主题的学术论文 - 该论文目前正在接受同行评审,但它可以帮助您理解关系代数和 Cypher 之间的联系:http://docs.inf.mit.bme.hu/ingraph/pub/btw2017-opencypher.pdf