簡體   English   中英

MYSQL / PHP總和與分組依據

[英]MYSQL/PHP sum with group by

TABLEA
id B_id C_id
1 1 0
2 1 0
3 0 1
4 0 2
5 0 2
6 0 2
tableB的
身份證數量
1 10 2

表C
身份證數量
1 6 1
2 15 3

我有這種數據庫,但我知道它的結構不是很好,因為我只是繼續瀏覽該網站,卻沒有太多時間來重組該網站。

我的問題是如何使用兩個表的左聯接到tableA來獲取tableB和tableC的總量。 如您所見,tableB和tableC中的數量將產生相同數量的tableA記錄。 我可以使用以下代碼獲取每個交易金額:

SELECT * FROM tableA A LEFT JOIN tableB B ON A.id = B.id LEFT JOIN tableC C ON C.id = A.id GROUP BY B.id, C.id

它會返回:
id B_id C_id B.id B.amount B. quantity C.id C.amount C.quantity 1 1 0 1 10 2 0 0 0
3 0 1 0 0 0 1 6 1 4 0 2 0 0 0 2 15 3

但是現在我想使用mysql SUM來獲取總數,但是GROUP BY不能與聚合函數SUM一起使用,因此總數應為:10 + 6 + 15 = 31

這是你想要的嗎?

SELECT coalesce(sum(b.quantity), 0) + coalesce(sum(c.quantity), 0)
FROM tableA A LEFT JOIN
     tableB B
     ON A.id = B.id LEFT JOIN
     tableC C
     ON C.id = A.id;

這將返回兩個表的總數。

編輯:

如果只需要表b和c的總和,表a的作用是什么? 這是你想要的嗎?

select amountb + amountc
from (select sum(amount) as amountb from tableb) b cross join
     (select sum(amount) as amountc from tablec) c;

暫無
暫無

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

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