我有三张表 A(ID,用户名,余额) B(充值金额,操作用户) C(消费金额,操作用户)
我想查询后得到这样一张表:ID,用户名,充值金额,消费金额,余额,貌似在SQL Server上的写法在MySQL上不对,应该怎么写呢?请教大家。
我想查询后得到这样一张表:ID,用户名,充值金额,消费金额,余额,貌似在SQL Server上的写法在MySQL上不对,应该怎么写呢?请教大家。
建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
参考一下这个贴子的提问方式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)
这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
from a inner join b on a.id=b.操作用户
inner join c on a.id=c.操作用户
建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
参考一下这个贴子的提问方式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)
这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
(
username varchar(20),
money int(10)
) insert into A select 'name1','80'
insert into A select 'name2','50'create table B
(
username varchar(20),
Addmoney int(10)
) insert into B select 'name1','10'
insert into B select 'name1','15'
insert into B select 'name2','2'
insert into B select 'name2','16'create table C
(
username varchar(20),
Decmoney int(10)
) insert into C select 'name1','3'
insert into C select 'name1','5'
insert into C select 'name1','6'
insert into C select 'name2','4'
insert into C select 'name2','7'
想得到这样的表:
username Addmoney Decmoney money
name1 25 14 80
name2 18 11 50
+----------+-------+
| username | money |
+----------+-------+
| name1 | 80 |
| name2 | 50 |
+----------+-------+
2 rows in set (0.00 sec)mysql> select * from b;
+----------+----------+
| username | Addmoney |
+----------+----------+
| name1 | 10 |
| name1 | 15 |
| name2 | 2 |
| name2 | 16 |
+----------+----------+
4 rows in set (0.00 sec)mysql> select * from c;
+----------+----------+
| username | Decmoney |
+----------+----------+
| name1 | 3 |
| name1 | 5 |
| name1 | 6 |
| name2 | 4 |
| name2 | 7 |
+----------+----------+
5 rows in set (0.00 sec)mysql> select username,
-> (select sum(Addmoney) from b where username=a.username) as Addmoney,
-> (select sum(Decmoney) from c where username=a.username) as Decmoney,
-> money
-> from a;
+----------+----------+----------+-------+
| username | Addmoney | Decmoney | money |
+----------+----------+----------+-------+
| name1 | 25 | 14 | 80 |
| name2 | 18 | 11 | 50 |
+----------+----------+----------+-------+
2 rows in set (0.00 sec)mysql>