SQL查询6度分离用于网络分析
发布时间:2020-12-12 06:29:23 所属栏目:MsSql教程 来源:网络整理
导读:我正在使用D3.js构建网络分析,以显示我的应用程序中的连接电话号码,最低可达六度.用于查找初始连接的SQL(postgres)低于且相当简单.但是,我很难过如何修改它来遍历六个级别的连接然后停止. SELECT player_id,ps.player_state,ps.email,ph.create_dateFROM game
我正在使用D3.js构建网络分析,以显示我的应用程序中的连接电话号码,最低可达六度.用于查找初始连接的SQL(postgres)低于且相当简单.但是,我很难过如何修改它来遍历六个级别的连接然后停止.
SELECT player_id,ps.player_state,ps.email,ph.create_date FROM game.phone_hashes ph INNER JOIN game.customer_settings cs ON cs.id = ph.player_id WHERE hash IN (SELECT hash FROM game.phone_hashes WHERE player_id = $1); 我已经通过研究这个问题找到了公用表格表达式(CTE)和递归的提及,但我不确定如何在这里应用它们. 我的目标是让所有玩家通过普通电话哈希连接到初始玩家($1),然后通过公共电话哈希连接到每个连接的所有玩家,以及开启和开出6度分离. 解决方法我想这就是你的意思:with recursive tc as( select $1 as player_id,1 as level union select ph2.player_id,level+1 from tc,phone_hashes ph1,phone_hashes ph2 where tc.player_id=ph1.player_id and ph1.hash=ph2.hash and tc.level < 6 ) select distinct player_id from tc (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |