我正在尝试编写一个脚本(PHP + MySQL)来查找由 2 个字段(id - id_from)相关的一定数量的记录。
我的表:
id | id_from | id_type | 描述 |
---|---|---|---|
1 | 空 | 1 | AAA |
2 | 空 | 1 | BB |
3 | 1 | 2 | CCC |
4 | 1 | 2 | DDD |
5 | 2 | 2 | EEE |
6 | 3 | 3 | FFF |
7 | 5 | 3 | GGG |
8 | 7 | 4 | HHH |
9 | 8 | 6 | 三 |
10 | 4 | 4 | JJJ |
给定任何id,我需要找到所有相关的记录(如果我有id 1,结果应该是3、4、6、10;如果id是7,结果应该是2、5、8、9) .
记录类型(id_type)或这些记录之间的关系数量没有限制;用户可以构建 6 种不同类型甚至 N,而且他们仍然可以无限制地从其他记录中生成更多记录。
我不负责数据库的设计。
我尝试循环基本查询(其中 id = N),将所有 N 存储在一个数组中,但这会跳过从同一记录派生的记录中派生的子项;因此,在我的第一个示例中,我丢失了记录 10,因为它派生自 4,这是 id 1 的第二次派生。
一个问题是我朝两个方向移动,从 id_from 和 id_from 中寻找 id,因为搜索并不总是从生成其他记录的第一条记录开始,可以提供任何记录来收集所有父母。
在一个循环中有 2 个循环(两个向前,另外两个向后)生成重复项(我在最后清理)。