如何對mysql中多個表格的多列資料進行求和?
P粉615886660
P粉615886660 2023-09-11 15:48:19

我有 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粉615886660
P粉615886660

全部回覆(1)
P粉946336138

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

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
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!