mysql下,这个SQL应该怎么写?

神州浪子 发布于 2014/04/03 16:46
阅读 406
收藏 2

我有两张表
A表:
用户     存款  日期
admin  1000  2014-01-01
admin  1500  2014-01-05

B表
用户    取款  日期
admin  750  2014-01-03
admin  420  2014-01-07

现在想用一句SQL达成以下结果:
用户    事件类型 金额   余额  日期
admin  存款      1000  1000  2014-01-01
admin  取款      750    250   2014-01-03
admin  存款      1500  1750  2014-01-05
admin  取款      420    1330  2014-01-07

请教各位大神 这个SQL应该怎么写?

加载中
0
ikasa007
ikasa007

先两个表join  在order by time

select * from (select * from A union select * from B) as C order by time asc;

A表和B表字段数目要相同,SQL未测试

ikasa007
ikasa007
回复 @神州浪子 : 是的,开始没看到余额,这余额好像没办法直接搞出来,要是把余额单独建一次表,每次操作后把余额计算对应存进去,不知道行不行得通
神州浪子
神州浪子
谢谢,思路很好,只是后面的余额计算很麻烦
0
哪上班
哪上班

第一,你错在把存取款放在俩表里。

第二,你这两个表里总得有个 account id 吧,这样才能 join 啊

哎,

神州浪子
神州浪子
刚看了下 原来的表是有关联id的。。 现在更改了 麻烦帮忙看看能解决么
神州浪子
神州浪子
我也不知道是哪个混蛋设计的表。。。 假设有ID,这个SQL应该怎么写呢?
0
wx---每日佳选
wx---每日佳选

select u,'存款',金额,时间 , ((select sum(存款金额) from a as a1 where a1.时间 <= a.时间) -(select sum(取款金额) from b as b1 where b1.时间 <= a.时间)) as 余额 from a

uniun 

select u,'取款',金额,时间 , ((select sum(存款金额) from a as a1 where a1.时间 <= b.时间) -(select sum(取款金额) from b as b1 where b1.时间 <= b.时间)) as 余额 from b

仅供参考..

0
青青小树
青青小树
用日期和存款、取款分组,sum(存款)—sum(取款),两表用用户关联
0
Timco
Timco
写一个存储过程将b表插入a表如何?取款字段为负
0
StormFour
StormFour

会用窗口函数一点都不麻烦,不过MYSQL好像没有这个武器


0
徐前伟
徐前伟
一个查询,结果OK SELECT c.* ,(SELECT sum(d.e) FROM (SELECT a.date,a.money as e FROM a UNION SELECT b.date,-b.money as e FROM b) as d WHERE d.date <= c.date) as '余额' FROM (SELECT * FROM a UNION SELECT * FROM b) as c ORDER BY c.date;
0
网络疯子
网络疯子
应该就一个表,存取用不同的标识才好嘛
返回顶部
顶部