Php 将两个列表合并到层次结构树中
我必须将两个表合并到一个层次结构树中 表1:代码结构Php 将两个列表合并到层次结构树中,php,mysql,Php,Mysql,我必须将两个表合并到一个层次结构树中 表1:代码结构 +--------+-------------+ | Code | Description | +--------+-------------+ | A | Descr 1 | | A1 | Descr 2 | | A101 | Descr 3 | | B | Descr 4 | | B2 | Descr 5 | | B202 | Descr 6
+--------+-------------+
| Code | Description |
+--------+-------------+
| A | Descr 1 |
| A1 | Descr 2 |
| A101 | Descr 3 |
| B | Descr 4 |
| B2 | Descr 5 |
| B202 | Descr 6 |
| B20201 | Descr 7 |
+--------+-------------+
表2:成本
+--------+-------------+------------+
| Code | Description | Cost total |
+--------+-------------+------------+
| A101 | Cost 1 | 10000 |
| B20201 | Cost 2 | 20000 |
+--------+-------------+------------+
我面临的挑战是获得以下输出:
A Descr 1
--A1 Descr 2
----A101 Descr 3
------A101 Cost 1 10000
B - Descr 4
--B2 Descr 5
----B202 Descr 6
------B20201 Descr 7
--------B20201 Cost 1 20000
如何创建这样的层次列表?有人能给我指出正确的方向吗
我的主要问题是从代码列表(a、A1、A101等)创建多维数组。您不能仅使用SQL来处理此问题。Mysql不提供本机元素来运行递归语句。您必须使用PHP构建sql请求。也许你应该考虑使用另一个类似于PGRESQL的SGBD,它为SQL查询嵌入递归循环。不幸的是,我无法更改数据库引擎。所以我必须使用php来实现这一点。如何创建列表的多维数组,如(a、A1、A101等)?定义A101取决于您的规则。这意味着什么?该规则是否可扩展到任何级别的子层次结构,还是静态数量的子层次结构?您使用的是表示层次结构数据的“枚举路径”模型,它可以通过按
code
对结果集进行排序,然后向后搜索以查找其code
是当前记录的子字符串的最新记录来解决此问题,但您可能会发现重新构造数据库以使用“嵌套集”或“传递闭包表”模型更容易。在他的演示中很好地介绍了它们。是否有最大级别数?第1个字符1级,第2个字符2级…3和4个3级位置5,6个4级。。。就这么多了吗?