我正在尝试开发一种功能,以显示用户的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/