树形结构复制

jiyingt036 2009-11-05 10:21:16
在一张树形结构的表中有一个树形模板
id name pid projectID(0表示模板)
现在每建一个项目
就会复制这份模板
怎样实现复制
...全文
220 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
raul0759 2009-11-06
  • 打赏
  • 举报
回复
给楼主简单提个思路:
可以先把要复制的项目的结构放到表变量或者临时表中,然后根据表中现有数据的最大ID设置一个将插入数据的ID,然后在构造的表变量里面根据这个ID构造复制后项目各个节点的ID,然后插进正式数据表。
可以用事务来保证数据正确。
jiyingt036 2009-11-05
  • 打赏
  • 举报
回复
jiyingt036 2009-11-05
  • 打赏
  • 举报
回复
id是自动增加的,如果项目2又复制一次模板的数据
那表的数据就应该是:

id name pid projectID
1 f1 0 0
2 f2 0 0
3 f11 1 0
4 f12 1 0
5 f111 3 0



6 f1 0 1(某个项目的ID)
7 f11 6 1
8 f111 7 1
9 f12 6 1
10 f2 0 1


11 f1 0 2(某个项目的ID)
12 f11 11 2
13 f111 12 2
14 f12 11 2
15 f2 0 2

jiyingt036 2009-11-05
  • 打赏
  • 举报
回复
复制模板里的1--5条数据,然后再插入这张表中得到6--10这份数据
lihao1129 2009-11-05
  • 打赏
  • 举报
回复
没明白你的意思,你是说 复制模版里的代码?还是什么意思?
jiyingt036 2009-11-05
  • 打赏
  • 举报
回复

id name pid projectID
1 f1 0 0
2 f2 0 0
3 f11 1 0
4 f12 1 0
5 f111 3 0

---复制上面的如下------

6 f1 0 1(某个项目的ID)
7 f11 6 1
8 f111 7 1
9 f12 6 1
10 f2 0 1
jiyingt036 2009-11-05
  • 打赏
  • 举报
回复
1 f1 0 0
2 f2 0 0
3 f11 1 0
4 f12 1 0
5 f111 3 0

---复制上面的如下------

6 f1 0 1(某个项目的ID)
7 f11 6 1
8 f111 7 1
9 f12 6 1
10 f2 0 1
jiyingt036 2009-11-05
  • 打赏
  • 举报
回复
就是有一颗树了,怎样复制一颗相同结构的存到这张表中
ma309385560 2009-11-05
  • 打赏
  • 举报
回复
[Quote=引用楼主 jiyingt036 的回复:]
在一张树形结构的表中有一个树形模板
id    name    pid    projectID(0表示模板)
现在每建一个项目
就会复制这份模板
怎样实现复制
[/Quote]
你问问题说清楚点 树形结构什么样子 你上边的不叫树形结构 每建一个项目。。还是页面啊 你建那么多项目干嘛
liguominz 2009-11-05
  • 打赏
  • 举报
回复
不清楚~~
kbyst 2009-11-05
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 jiyingt036 的回复:]
能不能贴个示例,insert的时候不知道pid怎么处理
[/Quote]

... 这个树不是你自己画的??

你那个怎么弄,这个就这么弄咯~~

不会让我帮你写代码吧 ^o^

明白原来就一点点来吧 lz这也是学习的过程~~

^_^
jiyingt036 2009-11-05
  • 打赏
  • 举报
回复
能不能贴个示例,insert的时候不知道pid怎么处理
kbyst 2009-11-05
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 jiyingt036 的回复:]
id是自增加的,我不能改表的结构了
有什么方法吗
[/Quote]

那你就只能以新增的id为根,重新画树,然后在读整棵树,然后insert
jiyingt036 2009-11-05
  • 打赏
  • 举报
回复
id是自增加的,我不能改表的结构了
有什么方法吗
kbyst 2009-11-05
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 jiyingt036 的回复:]
不明白,我现在就是不知道pid该怎样对应上去
[/Quote]

如果把projectID也设为主键

如下:



id name pid projectID
1 f1 0 0
2 f2 0 0
3 f11 1 0
4 f12 1 0
5 f111 3 0



1 f1 0 1
2 f2 0 1
3 f11 1 1
4 f12 1 1
5 f111 3 1


1 f1 0 2
2 f2 0 2
3 f11 1 2
4 f12 1 2
5 f111 3 2




lz明白没 ^_^

xiaochengfu1 2009-11-05
  • 打赏
  • 举报
回复
搞不清楚,看得模糊
jiyingt036 2009-11-05
  • 打赏
  • 举报
回复
不明白,我现在就是不知道pid该怎样对应上去
kbyst 2009-11-05
  • 打赏
  • 举报
回复
表结构有问题

如果当初需求就是这样

很明显,应该将projectID也设为主键的

如果是这样就不必映射id,pid了

就像你给的数据id自增了,pid还要使用某种方法映射,很累


如果可以的话,很简单,把projectID和表中原主键设为联合主键,就OK了

81,095

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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