从具有层次结构的同一表中选择数据(使用两列)

时间:2019-04-18 12:11:16

标签: sql sql-server

我正在基于权限创建基于Web的文件资源管理器。用户可访问的文件和文件夹存储在#temp表中。将显示文件和文件夹,例如,如果父文件夹与我共享,则不应显示其中的文件/文件夹。如果我的路径改变了,那我应该得到那些文件/文件夹。

我的桌子看起来像: Sample data with path and parent folder

如您所见,我正在存储路径和父项。因此,一开始我想选择其父目录不在路径中的那些文件/文件夹。后来,当我转到“组共享”目录时,即Path like '/home/usr1/Group Share%',我应该能够看到该文件夹​​中的文件。

如何选择此类数据?
我当前的查询会提取文件,而忽略文件夹

SELECT m1.Path, m1.Name, m1.Parent
FROM
    #temp m1
WHERE
    NOT EXISTS (SELECT 1 FROM #temp m2 WHERE m2.Parent = m1.Path)
    AND m1.Path LIKE '%'

但是我不能使用它,因为我想要文件夹,单击文件夹时,我的路径将更改为AND m1.Path LIKE '/home/usr1/Group Share%',从而在该文件夹中提供文件。

0 个答案:

没有答案