sql - 通过一个 mysql 查询获得 5 级关系

标签 sql mysql entity-relationship

非常感谢您事先的回答。我需要做这样的事情

我有一个表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/

相关文章:

Sql varchar 每次都会转到 else

mysql - SQL:计算一对多关系

mysql - 拒绝用户 'root' @'localhost' 使用密码 : yes Exception 访问

php - Laravel:用于不同公告类型的单个或多个 mysql 表

mysql - 如何管理MySQL数据库中的条件列?

ruby-on-rails - 如何在 Ruby on Rails 中实现 Petitions 和 User 模型之间的关系?

sql - oracle 通过添加 regexp_like 将字符串连接到数字不起作用

mysql - 使用列的平均值更新记录

MySQL WHERE EXISTS 对所有记录评估为真

mysql - Excel CSV 到 Mysql 数据库