sql >> データベース >  >> RDS >> Mysql

同じIDのMySQLSUM

    この現在の合計を試してください: http://www.sqlfiddle.com/#!2/ ce765 / 1

    select  
        bid as no, value,
        @rt := if(aid = @last_id, @rt + value, value) as total,
        @last_id := aid
    from table_b b, (select @rt := 0 as x, @last_id := null) as vars
    order by b.bid, b.aid;
    

    出力:

    | NO | VALUE | TOTAL | @LAST_ID := AID |
    |----|-------|-------|-----------------|
    |  1 |    10 |    10 |               1 |
    |  2 |    15 |    25 |               1 |
    |  3 |     5 |     5 |               2 |
    |  4 |    10 |    15 |               2 |
    |  5 |    25 |    25 |               3 |
    |  6 |    40 |    65 |               3 |
    

    次に、テーブルAに参加し、最後のクエリを実行します:

    select x.no, x.aid, x.value, x.total, a.value - x.total as balance
    from
    (
      select    
        bid as no, aid, value,
        @rt := if(aid = @last_id, @rt + value, value) as total,
        @last_id := aid
      from table_b b, (select @rt := 0 as x, @last_id := null) as vars
      order by b.bid, b.aid
    ) as x
    join table_a a using(aid)
    

    出力:

    | NO | AID | VALUE | TOTAL | BALANCE |
    |----|-----|-------|-------|---------|
    |  1 |   1 |    10 |    10 |      90 |
    |  2 |   1 |    15 |    25 |      75 |
    |  3 |   2 |     5 |     5 |      45 |
    |  4 |   2 |    10 |    15 |      35 |
    |  5 |   3 |    25 |    25 |     125 |
    |  6 |   3 |    40 |    65 |      85 |
    

    ライブテスト: http://www.sqlfiddle.com/#!2/ce765/ 1

    更新

    列に依存しない入札 並べ替え、グループ化の累計は影響を受けません: http://www.sqlfiddle。 com /#!2 / 6a1e6 / 3

    select x.no, x.aid, x.value, x.total, a.value - x.total as balance
    from
    (
      select    
        @rn := @rn + 1 as no, aid, value,
        @rt := if(aid = @last_id, @rt + value, value) as total,
        @last_id := aid
      from table_b b, (select @rt := 0 as x, @last_id := null, @rn := 0) as vars
      order by b.aid, b.bid
    ) as x
    join table_a a using(aid)
    

    出力:

    | NO | AID | VALUE | TOTAL | BALANCE |
    |----|-----|-------|-------|---------|
    |  1 |   1 |    10 |    10 |      90 |
    |  2 |   1 |    15 |    25 |      75 |
    |  3 |   1 |     7 |    32 |      68 |
    |  4 |   2 |     5 |     5 |      45 |
    |  5 |   2 |    10 |    15 |      35 |
    |  6 |   3 |    25 |    25 |     125 |
    |  7 |   3 |    40 |    65 |      85 |
    

    ライブテスト: http://www.sqlfiddle.com/#!2/6a1e6/ 3



    1. ケース式とケースステートメント

    2. 最初にコードを使用して文字列インデックスを作成する

    3. SQL-データベースにフォームを挿入します

    4. phpとjqueryajaxを使用してmysqlデータベースからデータを取得します