【发布时间】:2020-06-29 17:06:07
【问题描述】:
我正在尝试使用 SQL Server 图形处理检索特定人的所有朋友
Person 表为node
likes 作为edge//为了简单起见,我这里没有使用自动生成的 ID
我查找 John 的所有朋友的图表查询是这样的
select p1.name, p2.name [friend]
from person p1, likes l, person p2
where p1.name = 'John' and match(p1-(l)->p2)
这将返回以下结果集
╔══════╦════════╗ ║名字║朋友║ ╠══════╬════════╣ ║约翰║瑞恩║ ╚══════╩════════╝问题是我们得到了所有约翰喜欢的人,其中不包括喜欢约翰的人(在本例中为大卫)。在现实世界中,如果一个人是我的朋友,我也是他的朋友,对吧?我知道我可以在这里使用union 来找到所有喜欢约翰的人并加起来。但是对于寻找朋友的朋友的情况,情况会变得更糟。我们可以更直观地使用Match 或箭头进行调整
预期结果
+--------+--------+ |姓名 |朋友 | +--------+--------+ |约翰 |瑞安 | |约翰 |大卫 | +--------+--------+
更新:添加预期结果
【问题讨论】:
-
你能显示你的预期输出吗?
-
@KumarHarsh 添加了预期结果
-
请删除 Sql Server Tag,它会造成混乱。
-
我只提到 sql server。 sql server-2017 附带图形处理
标签: sql-server graph-databases social-networking sql-server-graph