首页 新闻 搜索 专区 学院

SQL怎么也写成递归形式(一张表 有父级关系)

0
悬赏园豆:30 [已关闭问题] 关闭于 2016-08-05 13:26

一张表:字段ID,Name,FId
如:表
ID,Name,FId
1,鱼类,0
2,肉类,0
3,鲫鱼,1
4,鲶鱼,1
5,猪肉,2
6,龙肉,2

请问各位大神 怎么写成
1,鱼类,0
3,鲫鱼,1
4,鲶鱼,1
2,肉类,0
5,猪肉,2
6,龙肉,2

sql
℃7O八落~的点滴的主页 ℃7O八落~的点滴 | 初学一级 | 园豆:181
提问于:2016-08-03 11:23
< >
分享
所有回答(8)
0

这种分类的数据怎么也不会很多吧?还是放到缓存里,然后用程序处理吧,sql应该可以干这个,但这个不应该是他干的活儿。。。

顾晓北 | 园豆:10819 (专家六级) | 2016-08-03 11:28

嗯  现在  在做NPOI的excel 模板设置,之前想做的是二级联动的下拉框,不过 这边要求 一个下拉框就行了

父级和子级 可以在一起,不过父级 后面得跟着它的子级

支持(0) 反对(0) ℃7O八落~的点滴 | 园豆:181 (初学一级) | 2016-08-03 11:33

@℃7O八落~的点滴: 要是我的话,这种数据肯定是在程序里来做,数据放到缓存里就行,这种数据改动比较少,访问多,最适合放到缓存里了。

支持(0) 反对(0) 顾晓北 | 园豆:10819 (专家六级) | 2016-08-03 11:35

@顾晓北: 可惜 我不搭框架  框架 也不由我做主,平时加个工具类  都得 上面同意。

支持(0) 反对(0) ℃7O八落~的点滴 | 园豆:181 (初学一级) | 2016-08-03 12:36
0

ID,Name,FId,nicai

1,鱼类,0,001
3,鲫鱼,1,001001
4,鲶鱼,1,001002
2,肉类,0,002
5,猪肉,2,002001
6,龙肉,2,002002

长蘑菇星人 | 园豆:1832 (小虾三级) | 2016-08-03 12:02

可惜 这边的ID是GUID 太多了,无法 父级子级拼接重组排序哟

支持(0) 反对(0) ℃7O八落~的点滴 | 园豆:181 (初学一级) | 2016-08-03 12:39

@℃7O八落~的点滴: 跟ID有什么关系么。

支持(0) 反对(0) 长蘑菇星人 | 园豆:1832 (小虾三级) | 2016-08-03 13:34

@长蘑菇星人:那你的001 001001 001002.。。。都怎么来的,如果我的 列 有nicai 这样的排序,直接order by nicai desc 就OK了哟

支持(0) 反对(0) ℃7O八落~的点滴 | 园豆:181 (初学一级) | 2016-08-03 17:25

@℃7O八落~的点滴: [手动滑稽] 你自己录入就行了啊。最简单就是手动录入。

支持(0) 反对(0) 长蘑菇星人 | 园豆:1832 (小虾三级) | 2016-08-03 17:29
0

1、这是显示层需要做的事情,没必要让数据层来做。

2、真想让SQL做也行,你搜索SQL SERVER  CTE,我就不具体教你怎么实现了。

自己看看应该能看懂吧。

爱编程的大叔 | 园豆:30813 (高人七级) | 2016-08-03 12:05

嗯 好的  回头 我去看看

支持(0) 反对(0) ℃7O八落~的点滴 | 园豆:181 (初学一级) | 2016-08-03 12:34
0

你这个 查到 界面层 找个树控件 随便完事的东西。。干嘛要用sql...而且 业务最好不要写进sql..

Постой! | 园豆:842 (小虾三级) | 2016-08-03 12:42

那个啥 我做的是NPOI的excel的导入功能,初始化下载模板  需要二级联动

支持(0) 反对(0) ℃7O八落~的点滴 | 园豆:181 (初学一级) | 2016-08-03 17:23
0

WITH City AS(
select areacode ,areaname,parentareacode
FROM dbo.T_EquCatalog where areaname='北京'
union all
SELECT a.areacode code1,a.areaname name1,a.parentareacode
FROM T_SYS_Area a join City b
on a.parentareacode=b.areacode
)
SELECT * FROM City

HZY888 | 园豆:209 (菜鸟二级) | 2016-08-03 20:22

我昨天已经写了  可惜  还不是我想要的形式哟!

代码:

with Category_CTE AS(
select CategoryID,CategoryName,ParentID,ItemOrder from MaterialCategory where ParentID is null
Union ALL
select m.CategoryID,m.CategoryName,m.ParentID,m.ItemOrder from MaterialCategory m
inner join Category_CTE cte ON m.ParentID=cte.CategoryID
)
select * from Category_CTE

【注】我要的是北京下边跟着北京的所有所有的地方,然后就是安徽  下边再跟着所有的地方哦,依次类推

支持(0) 反对(0) ℃7O八落~的点滴 | 园豆:181 (初学一级) | 2016-08-04 08:52

@℃7O八落~的点滴: 这句代码能行的我试过了,,是你要的格式,,可能是你哪里写的有问题吧。。我想给你截图,,结果上传不了。

支持(0) 反对(0) HZY888 | 园豆:209 (菜鸟二级) | 2016-08-24 10:11
0

虽然没有被解决  但是 还是很感谢!

℃7O八落~的点滴 | 园豆:181 (初学一级) | 2016-08-04 13:32
0

你可以吧表格设计成一颗树啊  标记父节点的 这样不就好找了

王琴 | 园豆:204 (菜鸟二级) | 2016-08-09 15:21
0

使用CTE进行递归查询

悦光阴 | 园豆:2251 (老鸟四级) | 2016-08-20 18:20
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册