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
Vous pouvez additionner les sommes dans des sous-requêtes et les réunir
Violon