在SQL Server图形数据库中获取非定向数据

问题描述 投票:1回答:1

我正在尝试使用SQL Server图形处理来检索特定人员的所有朋友

[Person表为node

╔════╦═══════╗║ID║名称║╠════╬═══════╣║1║大卫║║2║Suraj║║3║约翰║║4║瑞安║╚════牛皮═══════╝

[likes作为edge //为简单起见,我在这里不使用自动生成的ID]

╔════╦═══════╦═══════╦═══════════════════╗d ID║从║到║备注║╠════╬═══════╬═══════╬═══════════════════╣║1║大卫║Suraj║大卫喜欢Suraj║║2║大卫║约翰║大卫喜欢约翰║║3║John║Ryan║John喜欢Ryan║╚════牛皮═══════牛皮═══════牛皮═══════

我的图形查询中找到John的所有朋友会是这样

select p1.name, p2.name [friend]
from person p1, likes l, person p2 
where p1.name = 'John' and match(p1-(l)->p2)

这将返回以下结果集

╔══════╦════════╗║姓名║朋友║╠══════╬════════╣║约翰║瑞安║╚══════牛皮════════╝

问题是我们得到了约翰所有喜欢的人,这不包括喜欢约翰的人(在本例中为大卫)。在现实世界中,如果一个人是我的朋友,我也是他的朋友吧?我知道我可以在这里使用union查找所有喜欢John的人,并总结以上内容。但是对于寻找朋友的朋友来说,情况将更糟。我们可以通过Match或箭头]更直观地进行调整吗?

预期结果

+ ------ + -------- +|姓名|朋友|+ ------ + -------- +|约翰|瑞安||约翰|大卫|+ ------ + -------- +

更新

:已添加预期结果

[我正在尝试使用SQL Server图形处理人员表将特定人员的所有朋友检索为节点║ID║名称╠════╬══ ║1║David║2║Suraj║3║...

sql-server graph-databases social-networking sql-server-graph
1个回答
1
投票

您得到此答案的原因是由于边缘的定向特性。

© www.soinside.com 2019 - 2024. All rights reserved.