首頁  >  問答  >  主體

如何對mysql中多個表格的多列資料進行求和?

我有 4 張桌子:

1-供應商

ID_A 供應商名稱
1 蘋果
2 小米
3 諾基亞
4 OPPO

2-開始餘額

ID_B 起始餘額
1 1000
2 1000
3 1000
4

3- 發票

ID_C 發票值
1 200
1 500
2 800
3 250
3 400
4

4-返回

ID_D Return_value
1 100
2 50
2 25
3
4

結果顯示資料的算術方法:

起始餘額 發票 - 退貨 = 最終餘額

我嘗試在 mysql 中使用 UNION 和 JOINS :

SELECT   null  , Supplier_name , ID_A  , SUM(Invoice_value) , null ,  null FROM Suppliers          
             inner  JOIN  Invoices 
             ON ID_A = ID_C 
group by ID_A  
        
 UNION ALL
 
 SELECT   null  , Supplier_name , ID_A  , null , SUM(Return_value),  null  FROM Suppliers          
             left  JOIN  Returns 
             ON ID_A = ID_D
             
group by ID_A 



UNION ALL

  SELECT   Start Balance ,  Supplier_name, ID_A   , null  , null   ,( Start Balance + ifnull(SUM(Invoice_value),0) - ifnull(SUM(Return_value),0) )  FROM Suppliers         
          left  JOIN   Start Balance 
           ON ID_A = ID_B
           left  JOIN  Invoices 
           ON ID_A = ID_C 
           left  JOIN  Returns 
           ON ID_A = ID_D 
          
           group by ID_A

我預期這個結果是:

起始餘額 供應商名稱 ID_A 發票值 Return_value End_Balance
1000 蘋果 1 700 100 1600
1000 小米 2 800 75 1725
1000 諾基亞 3 650 1650
OPPO 4

但效果不佳,它在不同的行中顯示結果,最終餘額的計算是錯誤的 請問顯示此結果的正確程式碼是什麼

P粉615886660P粉615886660424 天前546

全部回覆(1)我來回復

  • P粉946336138

    P粉9463361382023-09-12 00:33:52

    您可以對子查詢中的總和進行求和並將它們連接在一起

    SELECT   `Start Balance`,
          Supplier_name
        , ID_A   , `Invoice_value`
        , `Return_value`   ,
        `Start Balance` + IFNULL(Invoice_value,0) - ifnull(Return_value,0)  total  
       FROM Suppliers         
              left  JOIN   Start_Balance 
               ON ID_A = ID_B
               left  JOIN  
        ( SELECT `ID_C`, SUM(`Invoice_value`) `Invoice_value` FROM Invoices GROUP By ID_C)  i
               ON ID_A = ID_C 
               left  JOIN  
        ( SELECT `ID_D`, SUM(`Return_value`) `Return_value` FROM Returns GROUP BY `ID_D`) r
               ON ID_A = ID_D
    起始餘額 供應商名稱 ID_A Invoice_value Return_value 總計
    1000 蘋果 1 700 100 1600
    1000 小米 2 800 75 1725
    1000 諾基亞 3 650 1650
    OPPO 4

    小提琴

    回覆
    0
  • 取消回覆