www.csdn.net论坛中的树型是怎么通过数据库读出生成树的?比如表是如下:
biao
id groupID
12 23
23 25
25 58
11 null
2 null
12 11
表中当GROUPID为空的时候为根节点,不为空的时候递归查询ID,直到没有匹配为止。再把读出的数据生成如论坛的树型结构。谢谢!!!急!
biao
id groupID
12 23
23 25
25 58
11 null
2 null
12 11
表中当GROUPID为空的时候为根节点,不为空的时候递归查询ID,直到没有匹配为止。再把读出的数据生成如论坛的树型结构。谢谢!!!急!
解决方案 »
- 求助:“在服务器上选择数据库”中没有我建立的数据库
- 一道关于模糊查询的SQL问题
- 请问我用sql 2005 express backup了一个数据库,可是发现 backup文件没有后缀, 并且在另一台pc上无法restore.
- 查找不唯一的列
- 如何实现增加记录时,如果字段A给了值,则字段B自动取字段A的值。
- 这样的SQL语句怎么写?
- 请问定义某一列default约束的sql语句??
- 如何将SQL Server数据库打包到程序的安装文件中?
- 虚拟机下JDBC连接SQLServer测试失败(急急!!)
- 子查询与聚合函数的问题
- 求Sql语句,从一个表中取另个表不存在的记录
- [急]存储过程中如何重复调用代码块(MSSQL)
根节点函数:
select * from biao where groupID is null or groupid=''
子节点函数:
select * from biao where groupID=parentID
CREATE TABLE tb(ID char(3),PID char(3),Name nvarchar(10))
INSERT tb SELECT '001',NULL ,'山东省'
UNION ALL SELECT '002','001','烟台市'
UNION ALL SELECT '004','002','招远市'
UNION ALL SELECT '003','001','青岛市'
UNION ALL SELECT '005',NULL ,'四会市'
UNION ALL SELECT '006','005','清远市'
UNION ALL SELECT '007','006','小分市'
GO--查询指定节点及其所有子节点的函数
CREATE FUNCTION f_Cid(@ID char(3))
RETURNS @t_Level TABLE(ID char(3),Level int)
AS
BEGIN
DECLARE @Level int
SET @Level=1
INSERT @t_Level SELECT @ID,@Level
WHILE @@ROWCOUNT>0
BEGIN
SET @Level=@Level+1
INSERT @t_Level SELECT a.ID,@Level
FROM tb a,@t_Level b
WHERE a.PID=b.ID
AND b.Level=@Level-1
END
RETURN
END
GO--调用函数查询002及其所有子节点
SELECT a.*
FROM tb a,f_Cid('002') b
WHERE a.ID=b.ID
/*--结果
ID PID Name
------ ------- ----------
002 001 烟台市
004 002 招远市
--*/