非常感谢您事先的回答。我需要做这样的事情
我有一个表friendship(id,user_id,friend_id,status,timestamp)
假设我是一个 user_id=43 的用户,我正在访问一个 user_id=15 的用户
在个人资料中应该是友谊的连接线
让我描述一下......假设我与用户有友谊(user_id=3 并且 user_id=3 的用户是我正在访问的用户的 friend 。
所以我会在网站上看到
连接
MyIcon->UserIcon(15)->UserIcon(3)->UserIcon(我正在访问)
只有在所有人的友谊状态都为 status=1 的情况下...
谁能告诉我查询应该是什么样子的?
最佳答案
对于普通的 MySQL,没有本地方法可以做到这一点。您必须决定要查看的深度,并使用该数量的 JOIN 操作来查看是否可以从一个用户 ID“到达”另一个用户 ID,或者您可以给社区贡献的图形引擎一个旋转:
http://openquery.com/products/graph-engine
(这涉及到使用非官方二进制 AFAIK,也许它已经可以作为插件使用,但我不确定)
使用该引擎,您可以在一个简单的查询中完成:
SELECT * FROM foo WHERE latch = 1 AND origid = 15 AND destid = 43;
然后这将为从用户 15 到用户 43 必须经过的每个链接返回一行。您将使用应用程序代码来很好地显示它。
关于sql - 通过一个 mysql 查询获得 5 级关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2006841/