Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL-数据库层次结构_Sql_Sql Server_Common Table Expression - Fatal编程技术网

SQL-数据库层次结构

SQL-数据库层次结构,sql,sql-server,common-table-expression,Sql,Sql Server,Common Table Expression,我有一张这样有价值的桌子 id | parent | folder_name ------------------------- 1 | 0 | Root 2 | 1 | NSW 3 | 1 | QLD 4 | 2 | Sydney 5 | 3 | Brisbane 从这个表中,我想得到一个包含所有家长的文件夹,直到更高级别。示例:文件夹名称=布里斯班 id | parent | folder_name ---------------

我有一张这样有价值的桌子

id | parent | folder_name
-------------------------
1  | 0      | Root
2  | 1      | NSW
3  | 1      | QLD
4  | 2      | Sydney
5  | 3      | Brisbane
从这个表中,我想得到一个包含所有家长的文件夹,直到更高级别。示例:文件夹名称=布里斯班

id | parent | folder_name
-------------------------
5  | 3      | Brisbane
3  | 1      | QLD
1  | 0      | Root
我想在sql中使用
JOIN
,而不是
CTE


任何帮助都会很好

递归CTE
是您需要的

;WITH cte
     AS (SELECT *
         FROM   Yourtable
         WHERE  folder_name = 'Brisbane'
         UNION ALL
         SELECT b.*
         FROM   cte a
                INNER JOIN Yourtable b
                        ON a.parent = b.id)
SELECT *
FROM   cte 

为什么CTE解决方案会出错?如果这是你的任务,那么你需要查看谷歌,而不是询问stackoverflow。检查@Anuj-虽然我同意我们不应该在问题中没有努力时回答/鼓励,但我确实理解,对于新手来说,递归CTE不容易理解。。也许我们可以向他们展示一下如何完成任务。@Pரதீப் 是的,我同意,但给出答案并不是正确的做法,向他们展示正确的学习材料才是正确的方法@AriefMuarriefBuhari-很高兴它有帮助..查看此链接以了解有关递归cte的更多信息