问一个要求效率比较高的语句

smbeng 2005-09-16 11:26:37
表T_Sort(id,left,right)
是一个二叉树结构:
a
b c
d e f g
要得到每个节点下的所有节点列表
a:bdecfg
b:de
c:fg
d:
e:
f:
g:
有没有比较高效的查询语句,
先谢过了
...全文
238 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
churchatp1 2005-09-19
  • 打赏
  • 举报
回复
或者
id pid name
001 null a
002 001 b
003 001 c
004 002 d
005 002 e
。。。。。。
不过这样查询得时候比较麻烦,更新倒是比较简单一些。
churchatp1 2005-09-19
  • 打赏
  • 举报
回复
你也可以换一下编码方式:
1。编号 名称
01 a
0101 b
0102 c
010101 d
010102 e
......
这样一个节点就可以不止2个孩子了,而且查询得时候会比较方便,不好得地方就是你更新得时候也需要更新相关节点得信息。
smbeng 2005-09-19
  • 打赏
  • 举报
回复
呵呵,谢谢大家了.我要结贴了
$扫地僧$ 2005-09-17
  • 打赏
  • 举报
回复
up
smbeng 2005-09-16
  • 打赏
  • 举报
回复
结构会不会不合理
smbeng 2005-09-16
  • 打赏
  • 举报
回复
表结构是这个:
1 a 2 3
2 b 4 5
3 c 6 7
4 d 0 0
5 e 0 0
6 f 0 0
7 g 0 0
smbeng 2005-09-16
  • 打赏
  • 举报
回复
谢谢 libin_ftsafe(子陌红尘)
表结构是这个:
1 a 2 3
2 b 4 5
3 c 6 7
4 d
5 e
6 f
7 g
子陌红尘 2005-09-16
  • 打赏
  • 举报
回复
--生成测试数据
create table BOM(ID VARCHAR(10),PID VARCHAR(10))
insert into BOM select 'a',NULL
insert into BOM select 'b','a'
insert into BOM select 'c','a'
insert into BOM select 'd','b'
insert into BOM select 'e','b'
insert into BOM select 'f','c'
insert into BOM select 'g','c'
go

--创建用户定义函数
create function f_getChild(@ID VARCHAR(10))
returns varchar(8000)
as
begin
declare @i int,@ret varchar(8000)
declare @t table(ID VARCHAR(10),PID VARCHAR(10),Level INT)
set @i = 1
insert into @t select ID,PID,@i from BOM where PID = @ID

while @@rowcount<>0
begin
set @i = @i + 1

insert into @t
select
a.ID,a.PID,@i
from
BOM a,@t b
where
a.PID=b.ID and b.Level = @i-1
end

select @ret = isnull(@ret,'')+ID from @t

return @ret
end
go

--执行查询
select ID,isnull(dbo.f_getChild(ID),'') from BOM group by ID
go

--输出结果
/*
a bcdefg
b de
c fg
d
e
f
g
*/

--删除测试数据
drop function f_getChild
drop table BOM
子陌红尘 2005-09-16
  • 打赏
  • 举报
回复
--生成测试数据


create table BOM(ID VARCHAR(10),PID VARCHAR(10))

truncate table BOM
insert into BOM select 'a',NULL
insert into BOM select 'b','a'
insert into BOM select 'c','a'
insert into BOM select 'd','b'
insert into BOM select 'e','b'
insert into BOM select 'f','c'
insert into BOM select 'g','c'
go

--创建用户定义函数
create function f_getChild(@ID VARCHAR(10))
returns varchar(8000)
as
begin
declare @i int,@ret varchar(8000)
declare @t table(ID VARCHAR(10),PID VARCHAR(10),Level INT)
set @i = 1
insert into @t select ID,PID,@i from BOM where PID = @ID

while @@rowcount<>0
begin
set @i = @i + 1

insert into @t
select
a.ID,a.PID,@i
from
BOM a,@t b
where
a.PID=b.ID and b.Level = @i-1
end

select @ret = isnull(@ret,'')+ID from @t

return @ret
end
go

--执行查询
select ID,dbo.f_getChild(ID) from BOM group by ID


drop function f_getChild
drop table BOM
内容概要:本文聚焦于“面向电网频率稳定的VSG惯量阻尼协同自适应控制策略”研究,深入探讨虚拟同步发电机(VSG)在微电网中的关键作用。通过Simulink仿真平台与Matlab编程实现,提出一种能够动态协同调节惯量和阻尼参数的自适应控制方法,旨在有效提升比例可再生能源接入背景下电网的频率稳定性。研究系统阐述了VSG的核心控制原理,构建了惯量与阻尼的动态调节机制,详细分析了系统的动态响应特性,并通过仿真实验验证了所提策略的有效性,成功解决了传统VSG因参数固定而导致的动态响应速度与稳态稳定性之间的矛盾题。; 适合人群:具备电力系统分析、自动控制理论等专业知识背景,熟练掌握Matlab/Simulink仿真工具,从事新能源并网技术、微电网运行控制、电力系统稳定性研究等方向的研究生、校科研人员及电力行业工程技术人员。; 使用场景及目标:①为微电网中VSG控制策略的优化设计提供理论依据和技术方案;②支撑渗透率可再生能源电力系统的频率稳定控制研究与工程实践;③为相关领域的学术论文复现、创新算法开发及科研项目申报提供完整的仿真模型与代码参考;④助力科研人员深入理解VSG动态特性并开展二次创新研究。; 阅读建议:建议学习者结合提供的Simulink仿真模型与Matlab源代码进行同步研习,重点剖析惯量与阻尼协同调控的逻辑架构及自适应算法的具体实现流程。可通过调整控制器关键参数,观察并分析系统在不同扰动下的频率响应曲线变化,从而深刻掌握VSG的内在动态规律与控制精髓。

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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