回答

收藏

SQL网络分析用于查询6个分离度

技术问答 技术问答 190 人阅读 | 0 人回复 | 2023-09-14

我正在使用D3.js进行网络分析,以显示应用程序中已连接的电话号码(分离度最低为6度)。查找初始连接的SQL(postgres)下面,很简单。但是,我很困惑如何修改它,然后停止通过六个级别的连接。
5 d. X6 O4 }" E5 B# jSELECT player_id,ps.player_state,ps.email,ph.create_dateFROM game.phone_hashes phINNER JOIN game.customer_settings cs ON cs.id = ph.player_idWHERE hash IN (SELECT hash FROM game.phone_hashes WHERE player_id = $1);通过研究这个问题,我发现我提到了通用表达式(CTE)递归法,但不确定如何在这里应用。
5 I# j4 T" V8 j% }5 |( M) ^+ ~& h我的目标是通过公共电话哈希将所有玩家连接到初始玩家($ 1)然后通过公共电话哈希将所有玩家连接到这些连接中的每一个,并连续6度分离。
- N7 R( W' a- L2 X                                                                ) R+ q1 t# j+ f0 V) m
    解决方案:                                                                / G$ y2 |% i- B* h# z8 a
                                                                我想这就是你的意思:
" J+ ]. s4 @) C7 b4 Swith recursive tc as(select $1 as player_id,1 as level  unionselect 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
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则