sql多表查询,请帮忙!

gdzcx 2002-03-25 08:46:22
这个查询是用于一个产品搜索里的,其中products数据库里有18个不同类型的产品表!我希望的是当用户输入一个产品编号时就可以到这18个表里查询到某一条相应的记录,产品编号是唯一的标记,请帮我!谢谢了

请帮忙改正以下代码:

<%dim conn,rsproducts,sql,keyword
keyword=request.form("keyword")
response.write(keyword)
set conn=server.createobject("ADODB.connection")
conn.open "products"

set rsproducts=server.createobject("ADODB.recordset")
do while rsproducts.state=0
strsql=" SELECT * FROM 257_series WHERE Amphenol_Part_Number='"&keyword&"'"

strsql=strsql+" IF @@ROWCOUNT<>0 GOTO ENDLABEL "
strsql=strsql+" SELECT * FROM 157_series WHERE Amphenol_Part_Number='"&keyword&"'"
strsql=strsql+" IF @@ROWCOUNT<>0 GOTO ENDLABEL "
strsql=strsql+" SELECT * FROM 2mm_18pins WHERE Amphenol_Part_Number='"&keyword&"'"
strsql=strsql+" IF @@ROWCOUNT<>0 GOTO ENDLABEL "

strsql=strsql+" ENDLABEL:"
set rsproducts=rsproducts.nextrecordset
loop
set rsproducts=conn.execute(strsql)
rsproducts.open sql,conn,1,1
%>
执行结果:当前提供者不支持从单一执行恢复多个记录集。




...全文
40 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
gdzcx 2002-03-26
  • 打赏
  • 举报
回复
给不了分你们啊!
《贴子回复次数大于跟给分次数》
gdzcx 2002-03-26
  • 打赏
  • 举报
回复
非常感谢各位仁兄的帮助和宝贵的建议!
我也认为这种数据库结构很不合理,问题我已经解决了,数据库结构是又别人提供的,所以只有结合他来做程序了!
我来CSDN才几次,但我真正的体会到这里的人的热情很真诚!我再次感谢大家!
QSQ99 2002-03-26
  • 打赏
  • 举报
回复
我个人认为将18产品表合而为一(productsid,productsname),再引入产品类别表(typeid,typyname),生产厂商表等,如此一来数据库操作将会非常简单,而且添加数据也方便啦
magicenjoy 2002-03-26
  • 打赏
  • 举报
回复
对,我建议你修改一下数据库
希望增加一个表,作为产品分类表,至少包括类别编号、类别名称两个字段,它的主键是产品类别编号。
你的其他几张放产品的表合并成一张产品表,增加产品分类编号字段,作为表的外键,与产品分类表关联。
产品表的每个产品序号和分类编号做成双主键。

这样的话,对于你以后的扩展以及编程非常有帮助。
回答完毕,谢谢
ssm1226 2002-03-26
  • 打赏
  • 举报
回复
如果只是查询编号的话,
最好另建一表,
用来存储编号信息
liuzxit 2002-03-26
  • 打赏
  • 举报
回复
对于你的方法我没意见﹐但提议你有没有想过用uion来合并table查询﹐不过可能会比你的方法慢。
gdzcx 2002-03-25
  • 打赏
  • 举报
回复
这个查询是用于一个产品搜索里的,其中products数据库里有18个不同类型的产品表!我希望的是当用户输入一个产品编号时就可以到这18个表里查询到某一条相应的记录,产品编号是唯一的标记,请帮我!谢谢了

请帮忙改正以下代码:

<%dim conn,rsproducts,sql,keyword
keyword=request.form("keyword")
response.write(keyword)
set conn=server.createobject("ADODB.connection")
conn.open "products"

set rsproducts=server.createobject("ADODB.recordset")
do while rsproducts.state=0
strsql=" SELECT * FROM 257_series WHERE Amphenol_Part_Number='"&keyword&"'"

strsql=strsql+" IF @@ROWCOUNT<>0 GOTO ENDLABEL "
strsql=strsql+" SELECT * FROM 157_series WHERE Amphenol_Part_Number='"&keyword&"'"
strsql=strsql+" IF @@ROWCOUNT<>0 GOTO ENDLABEL "
strsql=strsql+" SELECT * FROM 2mm_18pins WHERE Amphenol_Part_Number='"&keyword&"'"
strsql=strsql+" IF @@ROWCOUNT<>0 GOTO ENDLABEL "

strsql=strsql+" ENDLABEL:"
set rsproducts=rsproducts.nextrecordset
loop
set rsproducts=conn.execute(strsql)
rsproducts.open sql,conn,1,1
%>
执行结果:当前提供者不支持从单一执行恢复多个记录集。




28,406

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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