请教一个关于父子层级关系的数据结构和报表问题

shirley99 2005-01-14 10:32:18
主要是针对电信、银行这类有明显负责层级关系的单位。只要求记录三级:省级、市级、区县级。定期出一个报表,报表上要求能呈现出该单位的基本信息及父子关系。
如果单位是省级的,只显示该公司的基本信息;
如果单位是市级的,显示该公司的基本信息,以及它的省级公司(唯一)
如果单位是县市级的,显示该公司的基本信息,以及它上面的省级公司(唯一)及市级公司(唯一)

有没有好的例子提供?
...全文
236 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
shirley99 2005-01-14
  • 打赏
  • 举报
回复
表怎么设计呢,是在公司表(记载各单位的基本信息)中增加一个字段父客户,记载其父客户编码,还是另外建立一个表,记载各种关系?
daijingjie2002 2005-01-14
  • 打赏
  • 举报
回复
下面的 Transact-SQL 过程将一个编码的层次展开到任意深度。尽管 Transact-SQL 支持递归,但是使用临时表作为堆栈来跟踪所有正在处理中的项目(已经开始但尚未结束),将更加有效。某个项目一旦处理完毕,将被从堆栈中删除。当发现新的项目时,这些项目将被添加到堆栈中。
daijingjie2002 2005-01-14
  • 打赏
  • 举报
回复
CREATE PROCEDURE expand (@current char(20)) as
SET NOCOUNT ON
DECLARE @level int, @line char(20)
CREATE TABLE #stack (item char(20), level int)
INSERT INTO #stack VALUES (@current, 1)
SELECT @level = 1

WHILE @level > 0
BEGIN
IF EXISTS (SELECT * FROM #stack WHERE level = @level)
BEGIN
SELECT @current = item
FROM #stack
WHERE level = @level
SELECT @line = space(@level - 1) + @current
PRINT @line
DELETE FROM #stack
WHERE level = @level
AND item = @current
INSERT #stack
SELECT child, @level + 1
FROM hierarchy
WHERE parent = @current
IF @@ROWCOUNT > 0
SELECT @level = @level + 1
END
ELSE
SELECT @level = @level - 1
END -- WHILE



shirley99 2005-01-14
  • 打赏
  • 举报
回复
daijingjie2002(艰苦创业) ,说详细点好么?
daijingjie2002 2005-01-14
  • 打赏
  • 举报
回复
树形结构
shirley99 2005-01-14
  • 打赏
  • 举报
回复
daijingjie2002(艰苦创业),给出表结构好么?
daijingjie2002 2005-01-14
  • 打赏
  • 举报
回复
一般有父子关系的结构都用两个表
以上程序只从子表中列出树形结构
DreamManor 2005-01-14
  • 打赏
  • 举报
回复
关注,学习,

34,594

社区成员

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

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