[英]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.