在相应的列中找到完整路径

时间:2019-06-15 12:02:43

标签: mysql sql

我有一个包含两列的表格。第一列包含课程ID idx,第二列包含p_idx之后的课程ID。该表如下所示:

the table

我需要获得一个path列,其中包含从开始课程到最后课程的完整路径。

我试图写这样的东西:

select df.idx,
df.p_idx,
case when int(right(df.path, 1)) = int(left(df1.p_idx, 1)) 
then concat(df.path, "\\", right(df1.path, 2)) 
else df.path end as new_path


from (select tab.idx, 
      tab.p_idx,
      case when tab.p_idx is not null
      then concat(tab.p_idx, "\\",  tab.idx) 
      else tab.idx end as path
      from T tab) df
left join (select tab.idx, 
           tab.p_idx,
           case when tab.p_idx is not null 
           then concat(tab.p_idx, "\\", tab.idx) 
           else tab.idx end as path
           from T tab) df1 on df.idx = df1.idx

但是我敢肯定这不是怎么做的(这也不起作用)。

桌子是这样制成的:

create table T(
    idx int auto_increment primary key,
    p_idx int
    );

insert into T (p_idx)
values (null), 
       ( 1 ), 
       ( 2 ),
       (null), 
       ( 4 ), 
       ( 3 );

您能建议创建路径的正确步骤吗?

0 个答案:

没有答案