高分求触发器程序,分不够再加,邹兄等各路高手请!!!

Gelim 2005-05-16 11:42:50
我这里有一张表如下:

子ID 父ID
100 0
101 100
102 101
103 101
104 100
105 104
106 103

该表所表述的实际上是一棵树的结构,如下:
100
/ \
101 104
/ \ \
102 103 105
/
106

我现在想做一个触发器,每当插入一个数据后,能自动生成一张表,该表能包含某节点的左孩子和右孩子的清单,生成的表如下:

父ID 子节点 左右标志
100 101 左
100 102 左
100 103 左
100 106 左
100 104 右
100 105 右
101 102 左
101 103 右
101 106 右
102 0 无
103 106 左
104 105 右
105 0 无
106 0 无

以上恳请各路大虾帮助,我将无胜感激!谢谢!

...全文
184 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lcooc 2005-07-25
  • 打赏
  • 举报
回复
ding
haen_zhou 2005-05-19
  • 打赏
  • 举报
回复
ding
chichunhua 2005-05-19
  • 打赏
  • 举报
回复
Mark
Mark
ghostzxp 2005-05-18
  • 打赏
  • 举报
回复
Mark
Gelim 2005-05-18
  • 打赏
  • 举报
回复
谢谢阿,邹兄,我看看!
Gelim 2005-05-16
  • 打赏
  • 举报
回复
改成存储过程也可以,比如我需要查找100的左孩子和右孩子,则得到如下表:

父ID 子节点 左右标志
100 101 左
100 102 左
100 103 左
100 106 左
100 104 右
100 105 右

邹兄,请给我些提示。谢谢
mschen 2005-05-16
  • 打赏
  • 举报
回复
可是如何来区分是左节点还是右节点呢?
zjcxc 元老 2005-05-16
  • 打赏
  • 举报
回复
"每当插入一个数据后,能自动生成一张表,该表能包含某节点的左孩子和右孩子的清单"

这个某结点是什么? 生成的表放到那里去? 同时插入多条记录时,你的生成结果要求怎么处理?
zjcxc 元老 2005-05-16
  • 打赏
  • 举报
回复
--示例

--示例数据
create table tb(子ID int,父ID int)
insert tb select 100,0
union all select 101,100
union all select 102,101
union all select 103,101
union all select 104,100
union all select 105,104
union all select 106,103
go

--查询的函数
create function f_cid(@id int)
returns @t table(父ID int,子ID int,左右标志 varchar(10),level int)
as
begin
declare @l int
set @l=1
insert @t select @id,子ID,case 子ID when (select top 1 子id from tb where 父id=@id) then '左' else '右' end,@l
from tb
where 父ID=@id
while @@rowcount>0
begin
set @l=@l+1
insert @t select a.父ID,a.子ID,case a.子ID when (select top 1 子id from tb where 父id=a.父id) then '左' else '右' end,@l
from tb a,@t b
where a.父ID=b.子ID and b.level=@l-1
end
return
end
go

--调用
select * from f_cid(100)
go

--删除测试
drop table tb
drop function f_cid

/*--结果
父ID 子ID 左右标志 level
----------- ----------- ---------- -----------
100 101 左 1
100 104 右 1
101 102 左 2
101 103 右 2
104 105 左 2
103 106 左 3

(所影响的行数为 6 行)
--*/

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧