我目前正在编写一个程序,我在 syBase 中设置了一个文件系统我想找到所有包含我指定的文件的文件,然后我希望它找到包含所有这些文件的所有文件和很快。
现在我的代码可以工作并返回我想要的所有文件,但是我想要一个更优雅的版本,因为目前它有很多重复代码并且无论如何都不能涵盖所有文件。
我试过循环,但我运气不好。
INSERT #nodes
SELECT from_file
FROM file_map
WHERE to_file = @fileNode
insert #fileList
SELECT DISTINCT file
from #nodes
INSERT #nodes1
SELECT from_file
FROM file_map m
INNER JOIN #nodes n ON m.to_file = n.file
WHERE m.to_file LIKE '/%'
INSERT #fileList
SELECT DISTINCT file
FROM #nodes1
INSERT #nodes2
SELECT from_file
FROM file_map m
INNER JOIN #nodes1 n ON m.to_file = n.file
WHERE m.to_file LIKE '/%'
INSERT #fileList
SELECT DISTINCT file
FROM #nodes2
INSERT #nodes3
SELECT from_file
FROM file_map m
INNER JOIN #nodes2 n ON m.to_file = n.file
WHERE m.to_file LIKE '/%'
INSERT #fileList
SELECT DISTINCT file
FROM #nodes3
这是一个非常简单的过程,我只是想不出一种让这个更整洁/更快的方法。
这只是一个例子,系统可能有 30 个文件深度,所以我不想创建 30 个临时表。