2016-05-14 121 views
1

我有一个文件系统是这样的:查找文件的完整路径文件系统

C Drive - Docements - (empty) 
     - Music - Rock - a.mp3 
       - Jazz - SmoothJazz - b.mp3 
     - Photo - (empty) 
D Drive - (empty) 

每个文件或目录有一个id,和其父的身份证。现在给出一个文件名或目录名,你如何找到它的完整路径?

我的算法是:

Recursively (
    if (parent id is not null) 
     find parent id in the table 
) 

回答

1

您可以使用递归查询此。假设一台fileparentidname,:

WITH RECURSIVE t AS 
(SELECT id, name, parent, name as path 
FROM file 
WHERE id=3 
UNION ALL 
SELECT si.id,si.name, 
si.parent, 
si.name || '/' || sp.path as path 
FROM file As si 
INNER JOIN t AS sp 
ON (si.id = sp.parent) 
) 
SELECT * 
FROM t where parent is null 
ORDER BY path 

这将使你在pathid=3该文件的全路径。可能不是最有效的查询。

+0

这工作得很好。谢谢 –