我目前正在尝试从不同的表创建一个多级结构 测试有很多步骤。潜在的关系是:
1. parent sequence AA
1.1 child sequence BB
1.1.1 Step CC
有三个表格:
result_uut
包含以下列:
uut_id, uut_serial_number, uut_name
result_seq
已
uut_id, step_id, step_parent_id, step_name
result_uut
和result_seq
由uut_id
链接
父子关系由step_id = step_parent_id
result_step
已
uut_id, step_id, step_parent_id, step_name
它与result_seq
result_seq.step_id = result_step.step_parent_id
相关联
我想知道如何让输出具有父seq名称,子seq名称和步骤名称,并按顺序(1->1.1->1.1.1->1.1.2...)
显示。
答案 0 :(得分:0)
未经测试,我希望我做对了,但如果不是,至少你明白了(假设你正在为uut_id使用32位整数):
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;
我们的想法是我们使用连接来生成标记,每个标记我们生成ord标记,该标记是一个30位整数,通过连接每个填充到10位的uut_ids获得。这个hack是必要的,因为如果我们只是尝试构建实际的整数,我们将溢出64位。然后我们联合,按ord命令并在一个简单的子查询的帮助下抛弃ord。