首页 新闻 会员 周边

sql查询所有的子分类

0
悬赏园豆:20 [已解决问题] 解决于 2014-09-02 11:55

有这样一个表 table A,有ID,parentID列,parentID中记录了它的上级ID,如果没有上级ID则为0,现在,给定一个ID,如何查找到它的所有下级(即包含下级,下级的下级,下级的下级的下级......),数据库是sqlserver,sql该怎么写

最长的路漫漫的主页 最长的路漫漫 | 菜鸟二级 | 园豆:252
提问于:2014-09-01 16:22
< >
分享
最佳答案
1
;WITH cte AS  
(   
    SELECT Id,ParentId,DeptName FROM Dept WHERE id=2   
    UNION ALL  
    SELECT a.Id,a.ParentId,a.DeptName FROM Dept a,cte b WHERE a.ParentId=b.Id   
)   

SELECT * FROM cte

百度 sql cet 树

收获园豆:20
蒋正 | 菜鸟二级 |园豆:264 | 2014-09-01 16:48

长见识了,呵呵...

爱编程的大叔 | 园豆:30839 (高人七级) | 2014-09-01 16:54

厉害!SQL语句可以这样,在EF里又该怎么弄?谢谢!

519740105 | 园豆:5810 (大侠五级) | 2014-09-01 17:06
其他回答(4)
0

如果不是一定要sql的话,可以用递归的。

红尘中行 | 园豆:130 (初学一级) | 2014-09-01 16:37

递归的话,程序和数据库的开销太大了

支持(0) 反对(0) 最长的路漫漫 | 园豆:252 (菜鸟二级) | 2014-09-02 11:55
0

你是在做面包屑菜单么

+小马哥++ | 园豆:906 (小虾三级) | 2014-09-01 16:37

支持(1) 反对(0) 最长的路漫漫 | 园豆:252 (菜鸟二级) | 2014-09-02 11:54
0

牛人 @蒋正 的答复就不说了。

 

我的一个方案是:对数据增加一个CODE字段,然后下级数据的CODE一定是它直接上级的CODE开始,然后通过like来达成目的。

519740105 | 园豆:5810 (大侠五级) | 2014-09-01 17:07

这个方案要修改数据表结构的...

支持(0) 反对(0) 爱编程的大叔 | 园豆:30839 (高人七级) | 2014-09-01 17:16

这个方案要修改数据库结构,代价太大

支持(0) 反对(0) 最长的路漫漫 | 园豆:252 (菜鸟二级) | 2014-09-02 11:54
0

CTE查询可实现,EF中,存储过程吧~

幻天芒 | 园豆:37175 (高人七级) | 2014-09-01 17:26
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册