关于SQL Server下无限多级别分类查询解决办法
在开发中经常会遇到无限级分类的问题,最常见的是一些无限级目录之类的,如果你对SQL Server还不是太熟悉或者还不太熟悉SQL语言的话,这将是一件很困难的事情,也许你最后能实现类似的功能,不过可能花费的时间很长,效率也不是很理想,下面的示例也许能给你一个启示。/***创建表****/
CREATETABLE[dbo].[Tree](
[ID][int]IDENTITY(1,1)NOTNULL,
[PID][int]NULL,
[Name][varchar](10)COLLATEChinese_PRC_CI_ASNULL
)ON[PRIMARY]
/****创建自定义函数****/
CREATEFUNCTIONdbo.fGetTreeTable
(
@IDint=null
)
RETURNS@TabTABLE(IDint,PIDint,Namevarchar(10),Levint)--返回结果的表结构
AS
BEGIN
Declare@levint
Set@lev=0
While@lev=0or@@ROWCount>0
Begin
Set@Lev=@Lev+1
Insert@Tab(ID,PID,Name,Lev)
SelectID,PID,Name,@LevFromTreeWhere(@Lev=1and((PID=@ID)or(@IDisnullandPIDisnull)))or(PIDin(SelectIDFrom@TabWhereLev=@Lev-1))
orderbyID
End
RETURN
END
直接查询Select * from dbo.fGetTreeTable(null)就可以输入所有记录。
说明:本文转载自:http://drc.cnblogs.com/articles/269062.html,如有问题可以向原作者提出。
页:
[1]