簡體   English   中英

MySQL上5表的字段總和

[英]Sum of field from 5 table on MySQL

我在MySQL上有5個表,如下:

Table A
ID-A  | NAME
A1    | Name A
A2    | Name b

Table B
ID-B | ID-A
B1   | A1
B2   | A2

Table C
ID-C | ID-B | Value-C
C1   | B1   |   1
C2   | B2   |   1
C3   | B1   |   1

Table D
ID-D | ID-A  | Value-D
D1   | A1    | 1000
D2   | A1    | 500
D3   | A1    | 1000
D4   | A2    | 1000
D5   | A2    | 500

Table E
ID-E | ID-A  | Value-E
E1   | A1    | 2000
E2   | A1    | 1500
E3   | A2    | 500
E4   | A2    | 500
E5   | A2    | 1000

所以,我想要的價值總和如下:

1.表A的每個ID-A的表C AS tot_C SUM(Value-C)
2.表D的SUM(Value-D)為表ID-A的每個ID-Atot_D
3.對於表A的每個ID-A ,表SUM(Value-E)的表SUM(Value-E)tot_E
4.表A的每個ID-Atot_C+tot_D+tot_E AS tot_ALL

我希望你能幫助我。
謝謝親愛的!

select tb.id_A id_A, sum(valueC) tot_C 
from fiveTablesSum_C tc 
join fiveTablesSum_B tb on tc.id_B = tb.id_B 
group by id_A;
+------+-------+
| id_A | tot_C |
+------+-------+
| A1   |     2 |
| A2   |     1 |
+------+-------+

select id_A id_A, sum(valueD) tot_D from fiveTablesSum_D group by id_A;
+------+-------+
| id_A | tot_D |
+------+-------+
| A1   |  2500 |
| A2   |  1500 |
+------+-------+

select id_A id_A, sum(valueE) tot_E from fiveTablesSum_E group by id_A;
+------+-------+
| id_A | tot_E |
+------+-------+
| A1   |  3500 |
| A2   |  2000 |
+------+-------+

select
    t1.id_A,
    t2.tot_C, t3.tot_D, t4.tot_E,
    t2.tot_C + t3.tot_D + t4.tot_E tot_ALL
from fiveTablesSum_A t1
left join (
    select tb.id_A id_A, sum(valueC) tot_C
    from fiveTablesSum_C tc
    join fiveTablesSum_B tb on tc.id_B = tb.id_B
    group by id_A
) t2 on t1.id_A = t2.id_A
left join (
    select id_A id_A, sum(valueD) tot_D from fiveTablesSum_D group by id_A
) t3 on t1.id_A = t3.id_A
left join (
    select id_A id_A, sum(valueE) tot_E from fiveTablesSum_E group by id_A
) t4 on t1.id_A = t4.id_A
;
+------+-------+-------+-------+---------+
| id_A | tot_C | tot_D | tot_E | tot_ALL |
+------+-------+-------+-------+---------+
| A1   |     2 |  2500 |  3500 |    6002 |
| A2   |     1 |  1500 |  2000 |    3501 |
+------+-------+-------+-------+---------+

對於您的第一個查詢,請嘗試如下

SELECT 
    SUM(TableC.Value-C) as tot_C,TableC.ID-C
FROM
    TableC
        JOIN
    TableB ON TableB.ID-B = TableC.ID-B
        JOIN
    TableA ON TableA.ID-A = TableB.ID-A;

同樣,您也可以嘗試其他查詢,您應該尋找如何使用JOINS的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM