mysql批量多表update计算问题

石头子 2010-04-01 05:16:53
大家好,请教一个问题:谢谢




账户表
userid,总资金,消费总额
---------------------------
1 , 2000 , ?
2 , 5000 , ?
......
价格表
价格,商品,商家
-----------------------------
100 ,钢笔,A厂
109 ,钢笔,B厂
60 ,铅笔,C厂
58 ,铅笔,D厂
...........

订单表

id,价格,商品,商家,userid,数量,消费额
-----------------------------------------
1 ,? , 钢笔, B厂, 1 , 1000,?
2 ,? , 钢笔, B厂, 2 , 900 ,?
3 ,? , 钢笔, B厂, 2 , 1000,?
4 ,? , 钢笔, B厂, 1 , 900 ,?
3 ,? , 铅笔, C厂, 1 , 500 ,?
3 ,? , 铅笔, C厂, 2 , 300 ,?


问号表示 需要现读或计算的数据

消费总额 = 该用户的所有orders(消费额)相加
总资金 = 该用户总资金-该用户消费总额
订单表的 价格 = 价格表 对应商品的价格

订单表里有很多用户的订单
能不能用一个SQL语句 直接 批量处理 上面的数据,更新到对应的表相应的记录中?
...全文
353 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wwwwb 2010-04-02
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 mbcls 的回复:]
引用 1 楼 acmain_chm 的回复:
(不要高估你的汉语表达能力或者我的汉语理解能力)
建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html

1. 你的 create tabl……
[/Quote]

update 账户表 a inner join (
select b.userid,sum(b.价格*a1.数量) as je from 订单表 a1 left join 价格表 b on a1.商品=b.商品
group by b.userid ) b1
on a.userid=b1.userid
set a.消费总额=b1.je
石头子 2010-04-02
  • 打赏
  • 举报
回复
谢谢两位,虽然还没验证,但看了两位给的解答,有了思路了
十分感谢,结贴...

还一个事情:请看这里,请抽空指点一下

http://topic.csdn.net/u/20100402/14/6b912244-43b6-40e4-80f4-a1578d65bd04.html
ACMAIN_CHM 2010-04-01
  • 打赏
  • 举报
回复
update 账户表 a inner join (select userid, sum(数量*价格) as amt from  价格表 p,订单表 o where p.商品=o.商品 and p.商家=o.商家 group by userid) b
on a.userid=b.userid
set a.消费总额=b.amt
石头子 2010-04-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 acmain_chm 的回复:]
(不要高估你的汉语表达能力或者我的汉语理解能力)
建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html

1. 你的 create table xxx .. 语句
……
[/Quote]

谢谢上面两位

还要更新那个账户表,计算出某一个用户订单表里的总消费额,更新到账户表里...
wwwwb 2010-04-01
  • 打赏
  • 举报
回复
update 订单表 c inner join 价格表 d on c.商品=d.商品
inner join 账户表 e on a.userid=c.userid
inner join
(select b.userid,sum(b.价格*a.数量) as je from 订单表 a left join 价格表 b on a.商品=b.商品
group by b.userid) d1
set c.价格=d.价格,c.消费额=c.数量*d.价格,e.消费总额=d1.je
ACMAIN_CHM 2010-04-01
  • 打赏
  • 举报
回复
不知道你要的是不是这个。
update 订单表 o inner join 价格表 p on o.商品=p.商品 and o.商家=p.商家
set o.v=p.价格 ,o.消费额=数量*p.价格
ACMAIN_CHM 2010-04-01
  • 打赏
  • 举报
回复
(不要高估你的汉语表达能力或者我的汉语理解能力)
建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html

1. 你的 create table xxx .. 语句
2. 你的 insert into xxx ... 语句
3. 结果是什么样,(并给以简单的算法描述)
4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)

这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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