首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 多表关联更新的问题,请高手帮帮忙。 [已结贴,结贴人:daemon99]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • daemon99
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 揭帖率:
    发表于:2008-07-24 09:41:29 楼主
    A.个人编号=Input.个人编号
    A.地址编号=Input.旧地址编号

    B.个人编号=A.个人编号
    B.小组编号=A.小组编号
    B.小组内编号=A.小组内编号

    C.个人编号=B.个人编号
    C.年度=B.年度
    C.管理编号=B.管理编号
    C.地址编号=Input.旧地址编号

    更新值:C.地址编号=Input.新地址编号
    DB环境为Oracle,请大家帮帮忙。
    50  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hebo2005
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 3

      2

    发表于:2008-07-24 09:47:111楼 得分:17
    写个存储过程去更新
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • cosio
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-07-24 09:50:482楼 得分:17
    不用存储过程,直接更新语句就OK!给些数据,我来TRY!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • oracledbalgtu
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-07-24 09:53:293楼 得分:16
    SQL code
    UPDATE C SET 地址编号 = (SELECT INPUT.新地址编号 FROM INPUT, A, B, C WHERE A.个人编号 = INPUT.个人编号 AND B.个人编号 = A.个人编号 AND C.个人编号 = B.个人编号) WHERE EXISTS (SELECT NULL FROM INPUT, A, B, C WHERE A.个人编号 = INPUT.个人编号 AND B.个人编号 = A.个人编号 AND C.个人编号 = B.个人编号);
    引用楼主 daemon99 的帖子:
    A.个人编号=Input.个人编号
    A.地址编号=Input.旧地址编号

    B.个人编号=A.个人编号
    B.小组编号=A.小组编号
    B.小组内编号=A.小组内编号

    C.个人编号=B.个人编号
    C.年度=B.年度
    C.管理编号=B.管理编号
    C.地址编号=Input.旧地址编号

    更新值:C.地址编号=Input.新地址编号
    DB环境为Oracle,请大家帮帮忙。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • daemon99
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-07-24 10:31:094楼 得分:0
    谢谢ls的,不过您可能理解错了。INPUT不是表名,是用户输入的值。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • oracledbalgtu
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-07-24 10:36:255楼 得分:0
    SQL code
    UPDATE C SET 地址编号 = INPUT.新地址编号 WHERE C.个人编号 = INPUT.个人编号;

    引用 4 楼 daemon99 的回复:
    谢谢ls的,不过您可能理解错了。INPUT不是表名,是用户输入的值。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • daemon99
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-07-24 10:38:276楼 得分:0
    Input.个人编号 = 0001
    Input.旧地址编号 = 12345
    INPUT.新地址编号 = 54321

    A
    个人编号 地址编号 小组编号 小组内编号
    0001 12345 101    01

    B
    个人编号 小组编号 小组内编号 年度    管理编号
    0001 101    01        2007  200701

    C
    个人编号 年度  管理编号  地址编号
    0001    2007  200701  12345
    0002    2007  200701  12345
    0001    2008  200701  12345
    0001    2007  200702  12345
    0001    2007  200701  22222

    更新后:
    C
    个人编号 年度  管理编号  地址编号
    0001    2007  200701  54321  (被更新)
    0002    2007  200701  12345
    0001    2008  200701  12345
    0001    2007  200702  12345
    0001    2007  200701  22222
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • oracledbalgtu
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-07-24 10:49:037楼 得分:0
    SQL code
    UPDATE C SET 地址编号 = INPUT.新地址编号 WHERE EXISTS (SELECT NULL FROM A, B, C WHERE A.个人编号 = INPUT.个人编号 AND B.个人编号 = A.个人编号 AND C.个人编号 = B.个人编号 AND C.管理编号 = B.管理编号 AND C.年度 = B.年度);
    引用 6 楼 daemon99 的回复:
    Input.个人编号 = 0001
    Input.旧地址编号 = 12345
    INPUT.新地址编号 = 54321

    A
    个人编号 地址编号 小组编号 小组内编号
    0001 12345 101    01

    B
    个人编号 小组编号 小组内编号 年度    管理编号
    0001 101    01        2007  200701

    C
    个人编号 年度  管理编号  地址编号
    0001    2007  200701  12345
    0002    2007  200701  12345
    0001    2008  200701  12345
    0001    2007  200702  12345 …
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • daemon99
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-07-24 10:56:408楼 得分:0
    这个方法我试过,它会把C里面所有的“地址编号”都更新了,而不是只更新满足条件的行。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • daemon99
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-07-24 15:05:589楼 得分:0
    问题解决了。
    连用4个子查询,对C中需要修改的数据定位。
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved