巨难的SQL语句,非高手误入!

liuxiaowei 2002-08-29 04:17:15
表1:账号ID,上网卡ID,账号,密码
1 0 a b
2 0 aa bb
3 0 aaa bbb
............

表2:上网卡ID,账号,密码
11 c d
22 cc dd
33 cc ddd
............

从表1和表2中select出相同数目的记录后,如何把这些记录按

表1.上网卡ID=表2.上网卡ID

的关系联接上!只使用一条Update语句

结果为:
表1:账号ID,上网卡ID,账号,密码
1 11 a b
2 22 aa bb
3 33 aaa bbb
表2不变
...全文
88 42 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
42 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuxiaowei 2002-09-10
  • 打赏
  • 举报
回复
to: blueshrimp(天空还下着沙)
不知大哥是否有更好设计?小弟愚笨,望赐教,分数不是问题!
liuxiaowei 2002-09-06
  • 打赏
  • 举报
回复
没错!就是这样!
blueshrimp 2002-09-06
  • 打赏
  • 举报
回复
吓死我了


坏的设计,就为将来的高级需求埋下了重重障碍

吃了这次亏,下次也许会好些
linur 2002-09-05
  • 打赏
  • 举报
回复
同意cmd的观点,因为你给出的两个表中,电话卡表和上网卡表都有数据,这就表明它每条记录都有客户下了订单,所以两个表记录中的订单明细ID若是相同的话就表明它们属于同一个客户,你的意思是要将电话卡表加一个外键,这样就能通过电话卡表查到其所拥有的上网卡ID了,是不是这样?
dupenf 2002-09-03
  • 打赏
  • 举报
回复
俺是底手,来玩玩.不会
liuhelin 2002-09-03
  • 打赏
  • 举报
回复
楼主什么意思啊?没明白
snake_eye 2002-09-03
  • 打赏
  • 举报
回复
同意大花脸
lovexyg 2002-09-03
  • 打赏
  • 举报
回复
你用access,确实很难做到(估计做不到),要是别的,比如oracle之类的,你就完全可以用数据库的功能写函数来实现
womanlee 2002-09-03
  • 打赏
  • 举报
回复
我觉得,你最好还是在数据库上作一些工作吧,存储过程
kds 2002-09-03
  • 打赏
  • 举报
回复
祝你好运
lonelycat 2002-09-03
  • 打赏
  • 举报
回复
那你的约束条件不就是订单明细ID相同吗?
liuxiaowei 2002-09-03
  • 打赏
  • 举报
回复
这两个表是一对一的关系,只要对应上就行!
一句不行,多句也行,只要用Access2000实现就行,要是用存储过程就不用说了,不要用非SQL语句!
cmd 2002-09-03
  • 打赏
  • 举报
回复
Update 表1 set 上网卡ID= B2.上网卡ID
from 表1 B1,表2 B2
where B1.订单明细ID=B2.订单明细ID

如果不行,那一句是做不了
lonelycat 2002-09-03
  • 打赏
  • 举报
回复
哦,没看到还有定单号这个东西,那你两个表都加上一个定单号的字段,不就好做了吗?
lonelycat 2002-09-03
  • 打赏
  • 举报
回复
没看懂,你的表一和表二建立起来的不是一一对应的关系啊,因为你说帐号=1可以对应上网卡ID=11,也可以对应上网卡ID=22的。
ascap 2002-09-03
  • 打赏
  • 举报
回复
用join语句嘛,然后再添加。
liuxiaowei 2002-09-02
  • 打赏
  • 举报
回复
to: LK007(Q:42208006)
to:dearplumlxh(李子)
大哥,有何高见?不知此库还能如何设计?小弟愚笨,请赐教!
需求如下:

这两个表的内容是两种不同类型的账号
我的目的就是要是两种表建立关联
比如说:卖出100张电话卡,送100张上网卡,一张电话卡对应一张上网卡
这种对应就是:电话卡.上网卡ID =上网卡.上网卡ID
例如:100元的电话卡可以对应120分钟的上网卡,也可以对应180分钟的上网卡。
实际上
两个表的记录都是使用 select top n * from ...选出来的
所以没有任何关联,只有一个字段相等:订单明细ID,
因为他们属于都属于同一笔订单
如果使用游标的话,可以解决,无非就是遍历选出来的上网卡账号和电话卡账号对应就行了。
可是我用的是access2000所以只能用一句update实现。
我现在就是用程序实现的,速度很慢,所有记录必须传递到客户端才能进行,
1000条记录需要1分钟左右,所以想用SQL实现,
设想10000记录记录要用多长时间哪?

to: LK007(Q:42208006)
这个问题应该不涉及DDL吧,好像应该只涉及DML吧!


LK007 2002-09-02
  • 打赏
  • 举报
回复
库设计的太差。电信的系统这么……???

写程序实现吧。 不要指望DDL完成所有的功能。
dearplumlxh 2002-09-02
  • 打赏
  • 举报
回复
头一次见到这样设计数据库的:(
liuxiaowei 2002-09-02
  • 打赏
  • 举报
回复
实际上
两个表的记录都是使用 select top n * from ...选出来的
所以没有任何关联,只有一个字段相等:订单明细ID,
因为他们属于都属于同一笔订单
加载更多回复(22)

5,927

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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