关于MySQL多表联查并求和计算

zjxhdlj 2016-12-12 03:03:51
是这样的一个情况 这里有三张表 分别是用户user,订单 trade ,和资金记录 user_money_record
现在要根据用户来统计他们的订单总金额和账户余额以及充值总金额

user表
id realname money
1 张xx 100
2 王xx 500
3 李xx 1500

trade
id uid realmoney
1 2 5000
2 1 1000
3 2 5000
4 3 10000
5 1 3500

user_money_record
id uid money
1 2 5000
2 1 5000
3 2 2000
4 2 3000
5 3 5000
6 3 5000

表结构及数据如下
求统计他们的订单总金额和账户余额以及充值总金额
...全文
2160 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
子阙 2017-09-12
  • 打赏
  • 举报
回复
select sum(id) from ( select count(nr.goods_id)as id from ncp_release nr UNION ALL select count(pr.goods_id)as id from pesticide_release pr UNION ALL select count(fr.goods_id)as id from fertilizer_release fr )as b
VertigozZ 2016-12-16
  • 打赏
  • 举报
回复
user表建的就有问题 ,你也没说明字段和需求的对应关系
gzcitizeny 2016-12-16
  • 打赏
  • 举报
回复
同意八楼的建议。
fcy_n 2016-12-16
  • 打赏
  • 举报
回复
user表中money代表什么?余额?
zjxhdlj 2016-12-13
  • 打赏
  • 举报
回复
引用 6 楼 ACMAIN_CHM 的回复:
select *,
	(select sum(realmoney) from trade where uid=u.id),
	(select sum(money) from user_money_record where uid=u.id)
from user表 u
用错了 是这个
select u.name,t.realmoney,umr.money from user u
left join 
(select uid,sum(realmoney) as realmoney from trade group by uid) t on t.uid = u.id
left join
(select uid,sum(money) as money from user_money_record group by uid) umr on umr.uid = uid
zjxhdlj 2016-12-13
  • 打赏
  • 举报
回复
引用 6 楼 ACMAIN_CHM 的回复:
select *,
	(select sum(realmoney) from trade where uid=u.id),
	(select sum(money) from user_money_record where uid=u.id)
from user表 u
还有个
select u.realname,u.money,
    (select sum(realmoney) from trade_history where uid=u.id) as totalMoney,
    (select sum(money) from user_money_record where uid=u.id) as allMoney
from user u
lshfong 2016-12-13
  • 打赏
  • 举报
回复
select *,
	(select sum(realmoney) from trade where uid=u.id),
	(select sum(money) from user_money_record where uid=u.id)
from user表 u
ACMAIN_CHM 2016-12-12
  • 打赏
  • 举报
回复
select *,
	(select sum(realmoney) from trade where uid=u.id),
	(select sum(money) from user_money_record where uid=u.id)
from user表 u
zjxhdlj 2016-12-12
  • 打赏
  • 举报
回复
引用 3 楼 rucypli 的回复:
select A.id,A.realname,sum(B.realmoney),sum(C.money) from user A,trade B ,user_money_record C where A.id=B.uid and A.id=C.uid group by A.id
不行哦 这样会有重复的计算进去的
致命的西瓜 2016-12-12
  • 打赏
  • 举报
回复
引用 3 楼 rucypli 的回复:
select A.id,A.realname,sum(B.realmoney),sum(C.money) from user A,trade B ,user_money_record C where A.id=B.uid and A.id=C.uid group by A.id
他有余额的定义,这个不能这么算的
rucypli 2016-12-12
  • 打赏
  • 举报
回复
select A.id,A.realname,sum(B.realmoney),sum(C.money) from user A,trade B ,user_money_record C where A.id=B.uid and A.id=C.uid group by A.id
zjxhdlj 2016-12-12
  • 打赏
  • 举报
回复
引用 1 楼 wangjian0228 的回复:
订单总金额和账户余额以及充值总金额分别对应哪个表的哪个字段
上面说的很清楚了哦 user对应用户表 trade 对应的是订单 user_money_record 对应的用户充值的记录
致命的西瓜 2016-12-12
  • 打赏
  • 举报
回复
订单总金额和账户余额以及充值总金额分别对应哪个表的哪个字段

56,677

社区成员

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

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