我有三张表 A(ID,用户名,余额)  B(充值金额,操作用户)  C(消费金额,操作用户)
我想查询后得到这样一张表:ID,用户名,充值金额,消费金额,余额,貌似在SQL Server上的写法在MySQL上不对,应该怎么写呢?请教大家。
 

解决方案 »

  1.   

     (不要高估我的汉语理解能力)
       建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
       参考一下这个贴子的提问方式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)
       
       这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。   
      

  2.   

    先猜一下,猜ID在各表中均为主键。select a.id,a.用户名,b.充值金额,c.消费金额,a.余额
    from a inner join b on a.id=b.操作用户
    inner join c on a.id=c.操作用户
      

  3.   

    最后那张表中的充值金额应该为单个用户所有充值金额的和,select a.id,a.用户名,SUM(b.充值金额),SUM(c.消费金额),a.余额
      

  4.   

    何必这么费事呢,举个例子说明一下。否则还得继续猜来猜去。 (不要高估你的汉语表达能力或者我的汉语理解能力)
       建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
       参考一下这个贴子的提问方式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)
       
       这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。   
      

  5.   

    create table A 

    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
      

  6.   

    mysql> select * from a;
    +----------+-------+
    | 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>