一条select语句把我难倒了,大家帮我看看,能不能实现我提的两个问题
表depart
id parentid name
1 0 a
2 1 b
3 2 c
4 3 d
5 4 e
6 5 f
7 6 g
8 7 h
9 8 i
以上是表的信息,要求写出一条select语句,把parentid为1的“子孙”都查处来。
在orcale里实现了,语句如下:
select id,parentid ,name
start with parentid = 1
connect by prior id = parentid ;
(1)可是在mysql和SQLServer里面这个怎么写?
(2)有人说用递归在程序里实现,这个递归怎么写?
我希望大家帮我解决以上两个问题,小弟我刚到csdn不久,水平也有限,实在是没什么分数可
发给大家,真的非常惭愧。。。
------解决方案--------------------
其实我觉得与其你一次把所有的子孙节点都取出来,倒不如每次取一个节点的儿子节点,比如你点击id=2的节点,那么就取所有parentid=2的节点返回,当再点击id=3的节点时,就再次请求数据库把所有parentid=3的节点返回。
[解决办法]
Map getSons(String parentid){
map <- select id from depart d where d.parentid = :parentid
result += map;
for( item : map){
id = item.id
result += getSons(id);
}
}
[解决办法]
sql语句挺难写出来的
还是用递归作吧
[解决办法]
用递归吧,sqlserver中没有start with connect by
