SQL存储过程根据小类(集合)获取大类(集合)

limfungsuen 2009-09-07 10:19:36
TE_CorpInfoReal 表 有字段:C_FatherID,C_ChildID
每个字段的存放类型C_FatherID(1024,1025,1056,),C_ChildID(1045,1088,1045,1054,1063,)
C_FatherID存放的三个数值,是C_ChildID对应的不同大类ID...本来理论上,是在添加的时候,在添加的过程通过小类ID集合,去获取大类集合...后来操作了一次数据库批量处理5W多条数据,越过了获取大类ID集合这个步骤,于是数据库这批数据没有了对应大类集合(以NULL形式存放)。想请教这里的大侠们,我用SQL存储过程,怎么来实现批量处理这批数据,把C_ChildID集合对应的不同C_FatherID集合给补上...小类对应的大类有个TE_Category表。
处理的话我简单说下思路,可能有助于大侠们,理解我的问题,首先获取C_FatherID为NULL的一条记录的C_ChildID(1045,1088,1045,1054,1063,)然后根据逗号分解,存入临时表,然后跟TE_Category表去比对,获取对应的大类ID集合,然后把这些ID集合拼接成(1024,1025,1056,),然后存入该条记录的C_FatherID字段.....然后做循环(继续处理C_FatherID为NULL的记录)

在线等待中....急急急急。。。。
...全文
975 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
冰岛男孩 2009-09-12
  • 打赏
  • 举报
回复
mark
fuxiaoyang13 2009-09-08
  • 打赏
  • 举报
回复
dingding!!!
cjh1106 2009-09-07
  • 打赏
  • 举报
回复
做个视图来解决是否更合理一些??
limfungsuen 2009-09-07
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 weifei_tlp 的回复:]
说一下大概的思路:
两个循环,外面那个对每个要处理的数据操作
里面那个找出当前处理数据的父分类,再更新数据库
[/Quote]
我就是SQL代码不强啊,思路我最上面就已经写出来了,我目前实现到把对应的C_FatherID都取出来了
,是否必要再把这个数据存入临时表,然后取出来拼接??还有有其他简单方法。
第二个也是最关键的,就是如何循环...
以下是我目前进行到的代码:

use mydata
declare @items varchar(120)
set @items=(SELECT top 1 C_ChildID
FROM TE08DATA.dbo.TE_CorpInfoReal
where C_FatherID is null)

declare @split varchar(1)
set @split=','
declare @T_Module table(m varchar(6))

while charindex(rtrim(@split),@items) <>0
--print @items
begin
set @items=ltrim(rtrim(@items))
if(substring(@items,1,1) <>@split)
begin
insert into @T_Module (m) values(substring(@items,1,charindex(@split,@items)-1))
set @items =stuff(@items,1,charindex(@split,@items),'')
end
else
begin
set @items=stuff(@items,1,1,'')
end
end
if rtrim(@items) <>''
insert into @T_Module (m) values (@items)

select distinct C_FatherID from TE_Category a,@T_Module b
where a.C_ID=b.m
weifei_tlp 2009-09-07
  • 打赏
  • 举报
回复
说一下大概的思路:
两个循环,外面那个对每个要处理的数据操作
里面那个找出当前处理数据的父分类,再更新数据库
xiequan2 2009-09-07
  • 打赏
  • 举报
回复
个性签名有个性,看不懂,帮顶
shanglibo 2009-09-07
  • 打赏
  • 举报
回复
关注
limfungsuen 2009-09-07
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 js_szy 的回复:]
说怎么处理?
[/Quote]
寒···谢谢帮顶···我说的很明确:我要把C_FatherID就NULL的这5W条数据给赋上对应的值。
limfungsuen 2009-09-07
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 ks_reny 的回复:]
估計是字符串的拆批合併.
[/Quote]

。。。。就是啊···我可以做到单条信息的处理,但是不知道怎么批量处理这批数据··不纯SQL的话,结合asp或者.net程序应该问题也不是很大···我在SQL板块提问,就是想知道用存储过程怎么去批量处理这个数据
华夏小卒 2009-09-07
  • 打赏
  • 举报
回复
说怎么处理?
华夏小卒 2009-09-07
  • 打赏
  • 举报
回复
说了,这么多

你就说你要把2个表的数据,这么处理吧
ks_reny 2009-09-07
  • 打赏
  • 举报
回复
估計是字符串的拆批合併.
limfungsuen 2009-09-07
  • 打赏
  • 举报
回复
-----------------------------
TE_Category存放内容举例:
C_ID C_FatherID
1024 0
1025 0
1045 1024
1054 1025
1056 0
1063 1056
1088 1056
------------------------------------------------
C_FatherID:0表示为大类
limfungsuen 2009-09-07
  • 打赏
  • 举报
回复
有张TE_CorpInfoReal表,字段:CI_ID,C_FatherID,C_ChildID...
TE_Category表,字段:C_ID,C_FatherID...
-----------------------------
TE_CorpInfoReal存放内容举例:
CI_ID C_FatherID C_ChildID
10024 1024,1025,1056, 1045,1088,1045,1054,1063,
10025 1024,1025,1056, 1045,1088,1045,1054,1063,
10026 null 1045,1088,1045,1054,1063,
10027 null 1045,1088,1045,1054,1063,
10028 null 1045,1088,1045,1054,1063,
10029 null 1045,1088,1045,1054,1063,
10030 null 1045,1088,1045,1054,1063,
------------------------------------------------
这里的C_ChildID是TE_Category的C_ID集合,以逗号区分;C_FatherID就是C_ChildID集合对应的不同的大类集合。(换句话说,一条信息可以属于多个子类,并且子类可以属于不同大类)
------------------------------------------------
因为数据要根据大类和小类都可以搜索,所以为了数据搜索速度,加了大类集合,这个大类加的过程本来是在一条条信息添加的时候做判断加入的,后来有批5W条数据,我做了批处理,因为导入的数据本身是没有大类集合的,所以存入到表的时候,这个C_FatherID就为NULL了,现在我需要批处理把这5W条C_FatherID为NULL的给赋上对应的值。
请问我该怎么处理??
xuejiecn 2009-09-07
  • 打赏
  • 举报
回复
表达的不是很清楚。
soft_wsx 2009-09-07
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 sdhdy 的回复:]
楼主表达的不是很清楚。
请贴出表结构、数据、规则及想要的结果,谢谢!
[/Quote]情况不明!
--小F-- 2009-09-07
  • 打赏
  • 举报
回复
什么意思?
sdhdy 2009-09-07
  • 打赏
  • 举报
回复
楼主表达的不是很清楚。
请贴出表结构、数据、规则及想要的结果,谢谢!
lihan6415151528 2009-09-07
  • 打赏
  • 举报
回复
楼下继续
dawugui 2009-09-07
  • 打赏
  • 举报
回复
我没看懂,楼下继续.
加载更多回复(4)

27,579

社区成员

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

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