我想选择一个根项目,它的孩子尽可能地表现出色。我更喜欢使用嵌套集模型,但这次表结构遵循邻接模型。更多关于嵌套集和邻接模型。
我有一个dependencies-table
,还有一个items-table
。
依赖表
dependency_id | item_id | child_id
1 | 1 | 4
2 | 2 | 5
3 | 4 | 7
4 | 7 | 3
5 | 9 | 3
6 | 1 | 2
项目表
item_id | name | info
1 | Item A | 1st Item
2 | Item D | 2nd Item
3 | Item C | 3rd Item
4 | Item D | 4th Item
5 | Item E | 5th Item
6 | Item F | 6th Item
SQL,先试试
# selecting children (non-recursive)
# result: 4, 2
SELECT
child_id AS id
FROM `dependencies_table`
WHERE item_id = 1
我需要这个 SELECT 递归。
期望的输出
# children of item #1
dependency_id | item_id | child_id
1 | 1 | 4 // 1st level
6 | 1 | 2 // 1st level
2 | 2 | 5 // 2nd level, 1->2->5
这种情况应该很常见,但我想知道我现在找不到最佳实践。请注意:它是 MySQL,所以我无法使用 CTE!
你将如何解决这个问题?提前致谢!
编辑:我发现了一个有趣的线程,但我的问题还没有解决。所以,请不要关闭这个问题。
编辑 2:这是一个有趣的 PHP 解决方案,但不幸的是不是我真正想要的。