在开发过程中,我们经常遇到请求数据时,以及父节点查找所有子节点以及依据子节点查找所有父节点问题,其中最常用的就是依据某个省、查找该省下面的市、区、街道以及依据某个街道,查找到该街道所在区、市、省。
在此记录一下常用SQL语句;数据库设计如下:
一、由于在SQL SERVER2000中不支持递归,所以我们需要使用函数(表值函数)进行查询
1、依据父节点查找所有子节点
函数定义如下:
create function f_GetAllChildrenAreaById(@id int) --得到一个地区的所有下级
returns @temp_tb_areas table (id int,vName varchar(50),iParentId int ,iLevel int) as
begin
insert @temp_tb_areas select id,vName,iParentId,iLevel from tb_Areas where id = @id
while @@rowcount > 0
begin
insert @temp_tb_areas select id,vName,iParentId,iLevel from tb_Areas where iParentId in (select id