怎样由父节点查询到所有的子节点?

jerrard 2009-04-01 10:15:31
我的数据库名称是channel,结构是这样:
channelID parentID
3 1
4 1
5 1
2 3
给一个父节点,然后怎样能查询到子节点及子节点的子节点....呢?
例如给一个参数1,得到的子节点为3,4,5和2。

应该如何写sql查询语句呢?
越详细越好,我sql基本功比较差。急死我了,哪位帮帮我啊!
...全文
97 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
cat_hsfz 2009-04-02
  • 打赏
  • 举报
回复
你需要多开一个字段,存储Path信息。参考:
http://www.cnblogs.com/cathsfz/archive/2006/12/12/589464.html
sunshine_anycall 2009-04-02
  • 打赏
  • 举报
回复
--递归CTE
3
4Use tempdb
5Go
6
7Create Table Dept(
8 Id Int primary key,
9 Parent_Id int,
10 [name] nvarchar(50)
11)
12
13Insert Dept
14Select 0,0,N'<All>' Union All
15Select 1,0,N'财务部' Union All
16Select 2,0,N'行政部' Union All
17Select 3,0,N'业务部' Union All
18Select 4,3,N'软件开发' Union All
19Select 5,3,N'软件测试'
20Go
21
22--查询所有部门
23Declare @DeptName nvarchar(50)
24Set @DeptName = '业务部'
25
26;With
27CTE_Depts as
28(
29 --定位点成员
30 Select * From Dept
31 Where [name]=@DeptName
32 Union All
33 Select A.*
34 From Dept A,CTE_Depts B
35 Where A.Parent_Id = B.Id
36)
37
38Select * From CTE_Depts
josephSC 2009-04-02
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 liuyeede 的回复:]
用递归的存储过程可以实现
[/Quote].
NowtAngell 2009-04-01
  • 打赏
  • 举报
回复
建议楼主找一个树结构好好看一下 递归的入门经典实战 呵呵 半年没来着逛了
liuyeede 2009-04-01
  • 打赏
  • 举报
回复
http://blog.csdn.net/lzf_1985/archive/2008/03/28/2226794.aspx
http://topic.csdn.net/t/20040615/21/3095414.html
liuyeede 2009-04-01
  • 打赏
  • 举报
回复
用递归的存储过程可以实现
ustbwuyi 2009-04-01
  • 打赏
  • 举报
回复
递归查询插入临时表中,不如在C#中写来的方便
ustbwuyi 2009-04-01
  • 打赏
  • 举报
回复
看错了
ustbwuyi 2009-04-01
  • 打赏
  • 举报
回复

select channelID,channelName from [channel] where parentID=1

62,267

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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