Maison  >  Questions et réponses  >  le corps du texte

Comment additionner plusieurs colonnes de données de plusieurs tables dans MySQL ?

J'ai 4 tables :

1-Fournisseur

ID_A Nom du fournisseur
1 Pomme
2 Xiaomi
3 Nokia
4 OPPO

2-Démarrer le solde

ID_B Solde de départ
1 1000
2 1000
3 1000
4 vide

3- Facture

ID_C Valeur de la facture
1 200
1 500
2 800
3 250
3 400
4 vide

4-Retour

ID_D Return_value
1 100
2 50
2 25
3 vide
4 vide

Méthode arithmétique pour afficher les données en conséquence :

Solde de départ + Facture - Retours = Solde final

J'essaie d'utiliser UNION et JOINS dans MySQL :

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

Je m'attends à ce que ce résultat soit :

Solde de départ Nom du fournisseur ID_A Valeur de la facture Return_value Fin_Balance
1000 Pomme 1 700 100 1600
1000 Xiaomi 2 800 75 1725
1000 Nokia 3 650 vide 1650
vide OPPO 4 vide vide vide

Mais ça ne marche pas bien, ça montre les résultats sur différentes lignes et le calcul du solde final est faux Quel est le bon code pour afficher ce résultat

P粉615886660P粉615886660405 Il y a quelques jours528

répondre à tous(1)je répondrai

  • P粉946336138

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

    Vous pouvez additionner les sommes dans des sous-requêtes et les réunir

    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
    Solde de départ Nom du fournisseur ID_A Invoice_value Return_value Total
    1000 Pomme 1 700 100 1600
    1000 Xiaomi 2 800 75 1725
    1000 Nokia 3 650 vide 1650
    vide OPPO 4 vide vide vide

    Violon

    répondre
    0
  • Annulerrépondre