表departid            parentid             name1                     0                    a2                     1                    b 3                     2                    c4                     3                    d5                     4                    e6                     5                     f7                     6                    g8                     7                    h9                     8                     i    以上是表的信息,要求写出一条select语句,把parentid为1的“子孙”都查处来。在orcale里实现了,语句如下:select    id,parentid ,namestart    with   parentid  =  1connect   by   prior   id = parentid  ;(1)可是在mysql和SQLServer里面这个怎么写?(2)有人说用递归在程序里实现,这个递归怎么写?我希望大家帮我解决以上两个问题,小弟我刚到csdn不久,水平也有限,实在是没什么分数可发给大家,真的非常惭愧

解决方案 »

  1.   

    其实我觉得与其你一次把所有的子孙节点都取出来,倒不如每次取一个节点的儿子节点,比如你点击id=2的节点,那么就取所有parentid=2的节点返回,当再点击id=3的节点时,就再次请求数据库把所有parentid=3的节点返回。
      

  2.   

    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);
        }
    }
      

  3.   

    sql语句挺难写出来的
    还是用递归作吧
      

  4.   

    用递归吧,sqlserver中没有start with   connect  by