Php MySQL统计一个表中最大的引用跟踪
下表记录了哪些用户引用了哪些用户的网站(例如简化): 我如何做一种递归查询来计算出最长的引用路径 因此,在上面的实例中,用户Php MySQL统计一个表中最大的引用跟踪,php,mysql,Php,Mysql,下表记录了哪些用户引用了哪些用户的网站(例如简化): 我如何做一种递归查询来计算出最长的引用路径 因此,在上面的实例中,用户1将拥有3的推荐线索,因为他们推荐的人,推荐了某人,然后他们推荐的人推荐了其他人 这可能很容易变得相当复杂,但我只希望非常不规则地运行它 作为一个php函数来做可能更好,但我很难理解它?因此,基本上,您需要遍历树图并确定其中哪一个最长。在存储父ID和子ID的数据结构中,您可以通过mysql中存储过程中的循环来实现 但是,您也可以从php中执行相同的操作,这会增加每个循环中p
1
将拥有3
的推荐线索,因为他们推荐的人,推荐了某人,然后他们推荐的人推荐了其他人
这可能很容易变得相当复杂,但我只希望非常不规则地运行它
作为一个php函数来做可能更好,但我很难理解它?因此,基本上,您需要遍历树图并确定其中哪一个最长。在存储父ID和子ID的数据结构中,您可以通过mysql中存储过程中的循环来实现 但是,您也可以从php中执行相同的操作,这会增加每个循环中php和数据库之间的通信开销,因此我相信存储过程实现会更好 很好地概述了如何在mysql中实现和传输图形 您必须修改其中的listReach()过程以返回行数而不是列表。您甚至可以将该过程更改为返回数字的函数。我还将“创建表”部分更改为“创建临时表” 然后使用max()确定哪些路径最长
按照评论中的约定,仅对未引用的用户ID调用此函数。如果用户1引用了用户2,用户2引用了用户3和4,那么用户1的引用路径有多长?1还是2?换句话说:是链中被引用人的距离重要,还是分支下被引用人的数量重要?您需要
,而在foreach
中,我看到的唯一方法是使用php。无论如何,这对你的机器来说都是非常有压力的。@Shadow应该总是从一个没有被推荐到该站点以避免的用户开始branches@Silver89我知道这一点,于是我问了他们,所以这只不过是计算它的深度,而不是他们提到的数量,希望这是有意义的
| id | user_id | friend_id |
|-------|--------------------|--------------|
| 1 | 1 | 2 |
| 2 | 2 | 3 |
| 3 | 3 | 4 |
| 4 | 10 | 15 |