Mysql SQL:查询多级分层表

Mysql SQL:查询多级分层表,mysql,sql,parent-child,multi-level,Mysql,Sql,Parent Child,Multi Level,我目前正在尝试从不同的表创建一个多级结构 测试有很多步骤。基本关系是: 1. parent sequence AA 1.1 child sequence BB 1.1.1 Step CC 共有三个表格: result\u uut包含以下列: uut_id, uut_serial_number, uut_name 结果\u seq已完成 uut_id, step_id, step_parent_id, step_name result\u uut和result\u seq通过uut\

我目前正在尝试从不同的表创建一个多级结构 测试有很多步骤。基本关系是:

1. parent sequence AA
 1.1 child sequence BB
  1.1.1 Step CC 
共有三个表格:

result\u uut
包含以下列:

uut_id, uut_serial_number, uut_name
结果\u seq
已完成

uut_id, step_id, step_parent_id, step_name
result\u uut
result\u seq
通过
uut\u id
父子关系由
step\u id=step\u parent\u id

结果\u步骤
已完成

uut_id, step_id, step_parent_id, step_name
它通过
result\u seq.step\u id=result\u step.step\u parent\u id
链接到
result\u seq


我想知道如何让输出具有父序列名称、子序列名称和步骤名称,并按顺序显示
(1->1.1->1.1.1->1.1.2…

未测试,我希望我的想法是正确的,但如果不是这样,至少您了解了这个想法(假设您使用的是uut_id的32位整数):


其思想是,我们使用连接来生成标记,每个标记生成ord标记,该标记是一个30位整数,通过将uut_ID串联到10位来获得。这种攻击是必要的,因为如果我们只是试图构建实际的整数,我们将溢出64位。然后我们联合,按ord排序,并通过一个简单的子查询将ord丢弃。

您使用的是什么RDBMS系统?每个都有自己的方法来处理层次结构(SQL Server有CTE,例如,Oracle称为“连接方式”)
select cmb.tag from (select uut_id as tag,concat(lpad(uut_id,10,'0'),repeat('0',20)) as ord or from result_uut 
union
select concat_ws('.',aa.uut_id,bb.uut_id,cc.uut_id) as tag,concat(lpad(aa.uut_id,10,'0'),lpad(bb.uut_id,10,'0'),repeat('0',10)) as ord from result_uut aa join result_seq bb on aa.uut_id = bb.step_parent_uut_id
union
select concat_ws('.',aa.uut_id,bb.uut_id,cc.uut_id) as tag,concat(lpad(aa.uut_id,10,'0'),lpad(bb.uut_id,10,'0'),lpad(cc.uut_id,10,'0') as ord from result_uut aa join result_seq bb on aa.uut_id = bb.step_parent_uut_id join result_step cc on bb.uut_id = cc.step_parent_uut_id) cmb order by ord;