Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将两个列表合并到层次结构树中_Php_Mysql - Fatal编程技术网

Php 将两个列表合并到层次结构树中

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

我必须将两个表合并到一个层次结构树中

表1:代码结构

+--------+-------------+
|  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级。。。就这么多了吗?