一个sql请求,结果为previous

时间:2016-11-08 18:30:59

标签: sql iteration

我的问题是,我有一个由两列组成的表。它描述了文件夹。第一列是父文件夹的X,第二列是子文件夹的第二列。然后,使用此表我可以说文件夹{​​{1}}中的文件夹。

但是我可以拥有位于文件夹1中的文件夹2中的文件夹3。 我正在搜索的是一种从一个 SQL 请求中的文件夹ID中查找所有父文件夹的方法。

例如,从ID = 3开始,我的请求必须提供[1,2]。 所以,有一段时间我可以找到所有父文件夹,但如果该文件夹有457个父文件,那么只有一个文件夹会非常重!

以下请求提供父级的id

$sql = "SELECT IDFolder1 FROM folder_has_folder WHERE IDFolder2='$this->id'";

但我不知道有多少家长有文件夹。

你有想法做到这一点吗? 谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

例如:

create table dbo.FOLDER (id_parent int, id_child int)
insert into dbo.FOLDER (id_parent, id_child) values (NULL,1), (1,2), (2,3)

with CTE as
(select id_parent, id_child
 from dbo.FOLDER
 where id_parent is null
 union all
 select f.id_parent, f.id_child
 from dbo.FOLDER f
 join CTE c on f.id_parent = c.id_child
)
select * from CTE