php - 递归链接记录

标签 php mysql sql

我有一张表格,其中包含用户可以注册的时间段。在管理端,管理员用户可以选择将两个时隙“链接”在一起,这基本上是对最终用户说,“如果您注册其中一个时隙,则必须注册链接的所有其他时隙到它。这些链接存储在另一个表中,该表有两列,一列是需要链接的时间段的 ID,另一列是被链接到的时间段的 ID。

我怎样才能做到在将一个时隙与另一个时隙链接时,两者都取决于所选择的另一个。这也需要对其他链接的时隙进行递归,如下例所示:

Admin says:

#1 is linked to #2
#3 is linked to #2

Therefore:

#1 is linked to #2
#2 is linked to #1
#3 is linked to #2
#2 is linked to #3
#3 is linked to #1
#1 is linked to #3

实现此目标的最佳方法是什么?现在我正在尝试将该信息放入链接表中,但如果有另一种方法可以使用更多的 PHP 和更少的 SQL 来完成,那也可以。我会提供代码示例,但我认为这不会有帮助。

编辑:概念性答案很好。除非出于演示目的,否则我不需要为我编写代码。

最佳答案

一种方法可能是一个包含两列的表格,其形式为:Node_Id 和 Link_Id。

在这种情况下,Node_Id 是时间段 ID。对于上面的示例,行将是:

1    1
2    1
3    1

其中第一列1、2、3为时隙,第二列1为链路。

假设我们用链接 2、3 和 4 添加时隙 4、5、6、7 和 8。

4    2
5    3
6    2
7    4
8    2

这转化为:

Pick 4, must also pick 6 and 8 (all are link 2).
Pick 5, you're done (only member of link 3).
Pick 6, must also pick 4 and 8 (all are link 2).
Pick 7, you're done (only member of link 4).
Pick 8, must also pick 4 and 6 (all are link 2).

关于php - 递归链接记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5956241/

相关文章:

PHP 字段验证 - (2 个字符后跟 6 个数字)示例 : bp125489

Mac 上的 MySQL 安装

php - 我想合并sql数据库的两个函数?

php - 关于重复 key 更新 - 条件 WHERE VS CASE WHEN VS IF?

mysql - SQL:过滤计算列

mysql - SQL分区在mysql中使用 'not exists'

sql - 查询 Oracle 12 个月移动总计 (SUM) 数据

php - 在 phpmyadmin 错误中导入 SQL

php - 需要帮助尝试使用 mysql 访问我的数据库

Php Mysqli 问题和处理程序库/类