asp学习网: 首页 >> asp与数据库 >> sql语句 >> 数据库合并

数据库合并


   access里的两个表,想让两个表的内容合并
 
   表[a]结构如下:
 
 [id] 编号 自动编号
 [name] 名称 文本
 [price] 价格 数字
 [guige] 规格 文本
 [changjia] 生产厂家 文本
 [baozhuang] 包装 文本
 [danwei] 单位 文本
 
   共有900条记录,除了id和name字段,其他均可以为空
 
   表[b]结构如下:
 
 [id] 编号 自动编号
 [name] 名称 文本
 [price] 价格 数字
 [changjia] 生产厂家 文本
 [danwei] 单位 文本
 [xingzhi] 性质 文本
 
   共有800条记录,除了id和name字段,比表[a]少几个字段,但还多一个[xingzhi]的字符安其它均可以为空
 
   现在想生成一个新表[c],结构如下,而且内容是两个表的内容之和。
 
 [id] 编号 自动编号
 [name] 名称 文本
 [price] 价格 数字
 [guige] 规格 文本
 [changjia] 生产厂家 文本
 [baozhuang] 包装 文本
 [danwei] 单位 文本
 [xingzhi] 性质 文本
 
   用sql语句也可以,手工操作也好,xml也好,别管怎么着吧,怎么实现呀,哥们要郁闷坏了,真要让我们再输入800条记录,我就挂了。
 
   回答:
 
   1.这样
 
 insert into c(id,name,.....)
 select id,name,.....
 from a
 insert into c(id,name,.....)
 select max(id)+1,name,.....
 from b
 
   2.更正:
 
   如果直接在查询分析器里执行:
 
 insert into c(name,.....)
 select name,.....
 from a
 insert into c(name,.....)
 select name,.....
 from b
 
   3.用union方法
 
 insert into [c] ([id] ,编号,自动编号)
 select [id],编号,自动编号 from [a]
 union
 select [id],编号,自动编号 from [b]
 
   4.asp的解决办法
 
 <% ''循环检测a表
 Set rs = Server.CreateObect("ADODB.RECORDSET")
 rs.open "select * from a order by id",conn,1,1
 Do while not rs.eof
 Call actAdd(rs("name")) ''调用像b表添加内容的函数!
 rs.MoveNext
 Loop
 rs.Close
 Set rs = Nothing
 
 Sub actAdd(txt)
 Dim ts, sql
 sql = "insert into b(name) values(''"& txt &"'')"
 Set ts = Conn.Execute(sql)
 ts.Close
 Set ts = Nothing
 end Sub
 %>
 
   5.asp的解决办法
 
 <%
 dim arr_temp1,arr_temp2,arr_data
 set rs=conn.execute("select id,name,price,guige,changjia,baozhuang,danwei from a")
 arr_temp1=rs.getrows
 rs.close
 set rs=nothing
 
 set rs=conn.execute("select id,name,price,guige,changjia,danwei,xingzhi from b")
 arr_temp2=rs.getrows
 rs.close
 set rs=nothing
 
 rem 开始处理
 redim arr_data(ubound(arr_temp1,2)+ubound(arr_temp2,2),7)
 rem 把两个数组的内容复制进来
 这一部分自己写了做两个循环
 然后再存进数据库
 %>
from:asp学习网/title:数据库合并/ time:2006-4-19 16:02:38

本文主题数据库合并

asp教程 ©2006-2007 aspxuexi.com | 关于站点 | 版权隐私 | 站内搜索
复制或者翻版 请于夜间进行