Sql server 获得某一部门下的所有子部门。根据部门获得它的上级部门。以为要用递归呢,原来不需要的,通过自定义函数里,使用个临时表就可以了。@@RowCount作用可真不小啊。

一、准备数据

Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。--用户表
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。
if object_id ('Users','u'is not null
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。    
drop table Users
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。
create table Users
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。(
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。    
User_Id int identity(1,1not null PRIMARY KEY,
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。    
User_Name varchar(20)
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。)
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。
set IDENTITY_INSERT  Users on
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。
insert Users(User_Id,User_Name)
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。    
select 1,'User1' union all
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。    
select 2,'User2' union all
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。    
select 3,'User3' union all
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。    
select 4,'User4' union all
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。    
select 5,'User5' union all
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。    
select 6,'User6' union all
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。    
select 7,'User7' union all
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。    
select 8,'User8' union all
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。    
select 9,'User9' union all
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。    
select 10,'User10' union all
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。    
select 11,'User11' 
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。
set identity_insert Users off
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。
--部门表
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。
if object_id ('Dept','u'is not null
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。    
drop table Dept
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。
create table Dept
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。(
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。    Dept_Id 
int identity(1,1not null PRIMARY KEY,
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。    Dept_Name 
varchar(20),
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。    ParentDept_Id 
int
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。)
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。
set IDENTITY_INSERT  Dept on
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。
insert Dept(Dept_Id,Dept_Name,ParentDept_id)
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。    
select 1,'Dept1',0 union all
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。    
select 2,'Dept2',0union all
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。    
select 3,'Dept3',0 union all
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。    
select 4,'Dept1_1',1 union all
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。    
select 5,'Dept1_2',1 union all
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。    
select 6,'Dept3_1',3 union all
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。    
select 7,'Dept3_1_1',6 union all
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。    
select 8,'Dept3_1_2',6 union all
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。    
select 9,'Dept3_1_3',6 
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。
set identity_insert Dept off
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。
--用户部门表
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。
if object_id ('UserDept','u'is not null
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。    
drop table UserDept
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。
create table UserDept
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。(
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。    UserDept_Id 
int identity(1,1not null PRIMARY KEY,
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。    Dept_Id 
int,
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。    
User_Id int
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。)
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。
set IDENTITY_INSERT  UserDept on
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。
insert UserDept(UserDept_Id,Dept_Id,User_Id)
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。    
select 1,2,1 union all
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。    
select 2,2,2union all
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。    
select 3,1,5 union all
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。    
select 4,3,3 union all
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。    
select 5,3,4 union all
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。    
select 6,9,11 union all
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。    
select 7,9,10 union all
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。    
select 8,9,8 union all
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。    
select 9,4,6  union all
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。    
select 10,7,7  union all
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。    
select 11,4,9  
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。
set identity_insert UserDept off
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。

二、根据部门IP获得它下面的所有部门
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。if object_id('UF_GetChildDept','tf'is not null
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。
drop function UF_GetChildDept
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。
go
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。
-- =============================================
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。--
 Author:        <Author,,Name> adandelion
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。--
 Create date: <Create Date,,>2007-12-03
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。--
 Description:    <Description,,> 根据传入的部门ID,返回它下面的所有子部门。
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。--
 =============================================
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。
create function UF_GetChildDept( @DeptId int )
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。    
returns  @tb table (id int)
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。
as 
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。
begin
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。    
insert into @tb
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。    
select dept_id from dept where parentdept_id = @deptid
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。    
while @@Rowcount >0  --只要有下级节点就循环
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。
    begin
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。        
insert into @tb
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。        
select dept_id   --取出刚刚插入的deptid,去部门表里找parentdept_id = deptid的记录。
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。
            from dept as a inner join @tb as b on a.parentdept_id = b.id and a.dept_id not in(select id from @tb)
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。    
end
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。    
return
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。
end
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。
go 
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。
select *
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。
from dbo.UF_GetChildDept(7)

三、根据部门IP获得它的上级部门
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。if object_id('UF_GetParentDept','tf'is not null
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。
drop function UF_GetParentDept
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。
go
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。
-- =============================================
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。--
 Author:        <Author,,Name> adandelion
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。--
 Create date: <Create Date,,>2007-12-03
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。--
 Description:    <Description,,> 根据传入的部门ID,返回它的上级部门。
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。--
 =============================================
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。
create function UF_GetParentDept( @DeptId int )
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。    
returns  @tb table (id int)
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。
as 
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。
begin
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。    
insert into @tb
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。    
select parentdept_id from dept where dept_id = @deptid
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。    
while @@Rowcount >0  --
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。
    begin
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。        
insert into @tb
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。        
select parentdept_id   --
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。
            from dept as a inner join @tb as b on a.dept_id = b.id and a.parentdept_id not in(select id from @tb)
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。    
end
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。    
return
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。
end
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。
go 
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。
select *
Sql server 获得某一部门下的所有子部门。根据子部门获得它的上级部门。
from dbo.UF_GetParentDept(7)


相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-01-21
  • 2022-12-23
  • 2022-12-23
  • 2022-01-02
  • 2022-12-23
猜你喜欢
  • 2021-07-24
  • 2022-12-23
  • 2022-12-23
  • 2021-12-21
  • 2022-12-23
  • 2022-12-23
  • 2021-12-31
相关资源
相似解决方案