我正在尝试开发一种功能,以显示用户的3度网络(朋友,朋友的朋友,朋友的朋友的朋友)。与Linkedin相似。

我有一个解决方案,但它似乎效率低下,并且对数据库进行了大量查询。除了下面的伪代码之外,还有一种更好的方法来查找用户的三度连接吗?我是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

最佳答案

您可以通过3个带有'in'子句的子查询来查询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)))


并且不要忘记创建索引

关于php - 寻找三度网络的更有效方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38212003/

10-11 21:48