sql提问!需要根据被编码的路径得到最终的文字版路径。

sql提问!需要根据被编码的路径得到最终的文字版路径。

img

如图所示,图中id表示文件id,folder_id为所在上级文件夹id,path_ids是文件夹的路径id,fname为文件夹名。想要根据path_ids得到文件所在的全路径,,path_ids里的数字对应folder_id,名字对应fname。
求各位帮帮忙,这个好难,应该怎么做。

这个不属于数据库的范畴了 是要写代码实现

题主提供的数据有限,我自己编了数据做查询,本人用的是hive,语法可能与mysql有点差异,具体思路如下,供参考哈:

  1. 分组去重出各文件和文件夹全路径id;
  2. 将全路径id切分1,2,3...级文件夹id;
  3. 关联获取文件夹名称;
  4. 最后也可以将文件夹名称再拼接用/隔开,实现xxx/xxx/的效果
SELECT
    t2.fname    AS first_folder_name
   ,t3.fname    AS second_folder_name
   ,t1.fname    AS third_folder_name
   ,t1.name     AS file_name
FROM
(
    SELECT
        id
       ,name
       ,folder_id
       ,fname
       ,split(path_ids,'/')[1]    AS first_folder
       ,split(path_ids,'/')[2]    AS second_folder
    FROM tmp.tmp_test_20220822_01
    WHERE id = '354001772267'
) t1
LEFT OUTER JOIN 
(
    SELECT
        folder_id
       ,fname
    FROM tmp.tmp_test_20220822_01
) t2
ON t1.first_folder = t2.folder_id
LEFT OUTER JOIN 
(
    SELECT
        folder_id
       ,fname
    FROM tmp.tmp_test_20220822_01
) t3
ON t1.second_folder = t3.folder_id
;

img

img