找到三度网络的更有效方法

时间:2016-07-05 20:18:17

标签: php mysql connection

我正在尝试开发一个功能,通过显示用户的3度网络(朋友,朋友的朋友,朋友的朋友的朋友)。类似于Linkedin的做法。

我有一个解决方案,但它似乎效率低下并且对数据库进行了大量查询。有没有比下面的伪代码更好的方法来找到用户的3度连接?我是一个php(和编程)新手,如果我错过了一些明显的东西,请提前道歉。谢谢。

Query table to find user’s 1st connections.
    Push to Array1()

For (x = 0; x < count (Array1); x++){
    Query table to find Array1[x]’ s 1st connections and push to Array2();
}

For (y =0; y < count(Array2); y++){
    Query table to find Array2[y]’s 1st connections and push to Array3();
}

Array4 = array_unique(Array3);

数据库中的2个表具有以下结构:

members           
id, username, password, id

connections        
connectionId, userID, friendID, confirmed

1 个答案:

答案 0 :(得分:0)

您可以使用带有'in'子句

的3个子查询来查询Array4
select friendID from connections where userID  in (
select friendID from connections where userID  in (
select friendID from connections where userID in (
select friendID from connections where userID = 1)))

并且不要忘记创建索引