您现在的位置: 网页制作教程网 >> 网络编程 >> Asp教程 >> ASP 开发技巧 >> 文章正文

ASP数据库编程SQL常用技巧(2)

作者:蛙蛙王子

来源:AspCool

热度:

2006-12-2 11:06:15

三.数据库合并问题
  
    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 把两个数组的内容复制进来
  这一部分自己写了做两个循环
  然后再存进数据库
  %>

我来说两句:

1分 2分 3分 4分 5分
姓名: *


* 请各位网友遵纪守法并注意语言文明。
网站简介 | 联系方式 | 意见建议 | 版权说明
Copyright © 2007 All rights reserved
滇ICP备06006992号