部门表UserGroups:
userGroupID     parentID     userGroupName
1                  0            X房产局  
2                  1            财政部
3                  1            市场部
4                  2            收银科
5                  2            出纳科
6                  3            调查科部门与用户表User_Usergroup
userGroupID    userName
4                李明
5                张和青
6                王雷
6                张小苹
----------------------------------------------------------------
根据部门表生成树:
X房产局
   财政部
       收银科
       出纳科
   市场部
       调查科
那么:
  点树的‘X房产局’,就查询出所有用户。
  点树的‘财政部’, 就查询出李明,张和青。
  点树的‘市场部’, 就查询出王雷,张小苹。
  点树的‘收银科’, 就查询出李明。
  点树的‘出纳科’, 就查询出张和青。
  点树的‘调查科’, 就查询出王雷,张小苹。
---------------------------------------------------
请问:SQL怎写?

解决方案 »

  1.   

    这好像不是SQL 的能力范围
      

  2.   

    那个0是定死的吧?
    你这样试试.
    select distinct a.* from User_Usergroup a,UserGroups b where  a.userGroupID = b.userGroupID or b.parentID = 0.
    或者分开两个来写
      

  3.   

    to dingshengcai():0是定死的。
      

  4.   

    if (树的节点的parentid==0)
    select * from User_Usergroup
    if (树的节点的parentid==1)
    select * from User_Usergroup where userGroupID in (select userGroupID from UserGroups where parentid = 树的节点的userGroupID)
    其他的
    select * from User_Usergroup where userGroupID =树的节点的userGroupID 要不你就写成一条语句,好像是得用到递归吧?
      

  5.   

    to all:最好写成存储过程。不知可以不?
      

  6.   

    一条sql语句如果写出来的话,需要在程序中再做条件的判断,
    使用函数递归来写好点
      

  7.   

    to:cndsn(磐石) 
       麻烦把SQL写出来,好吗,烦了几天了。
      

  8.   

    写SQL效率太低,建议在程序中写递归