是這樣的一個情況 這里有三張表 分別是用戶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
表結構及資料如下
求統計他們的訂單總金額和賬戶余額以及充值總金額
uj5u.com熱心網友回復:
訂單總金額和賬戶余額以及充值總金額分別對應哪個表的哪個欄位uj5u.com熱心網友回復:
上面說的很清楚了哦 user對應用戶表 trade 對應的是訂單 user_money_record 對應的用戶充值的記錄
uj5u.com熱心網友回復:
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
uj5u.com熱心網友回復:
他有余額的定義,這個不能這么算的
uj5u.com熱心網友回復:
不行哦 這樣會有重復的計算進去的
uj5u.com熱心網友回復:
select *,
(select sum(realmoney) from trade where uid=u.id),
(select sum(money) from user_money_record where uid=u.id)
from user表 u
uj5u.com熱心網友回復:
還有個
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
uj5u.com熱心網友回復:
用錯了 是這個
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
uj5u.com熱心網友回復:
select *,
(select sum(realmoney) from trade where uid=u.id),
(select sum(money) from user_money_record where uid=u.id)
from user表 u
uj5u.com熱心網友回復:
同意八樓的建議。uj5u.com熱心網友回復:
user表建的就有問題 ,你也沒說明欄位和需求的對應關系uj5u.com熱心網友回復:
user表中money代表什么?余額?uj5u.com熱心網友回復:
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
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/112402.html
標籤:MySQL
上一篇:大物件的存盤問題
