Ich habe 4 Tische:
1-Lieferant
ID_A | Lieferantenname |
---|---|
1 | Apfel |
2 | Xiaomi |
3 | Nokia |
4 | OPPO |
2-Start-Guthaben
ID_B | Startguthaben |
---|---|
1 | 1000 |
2 | 1000 |
3 | 1000 |
4 | leer |
3- Rechnung
ID_C | Rechnungswert |
---|---|
1 | 200 |
1 | 500 |
2 | 800 |
3 | 250 |
3 | 400 |
4 | leer |
4-Rückkehr
ID_D | Rückgabewert |
---|---|
1 | 100 |
2 | 50 |
2 | 25 |
3 | leer |
4 | leer |
Arithmetische Methode zur Anzeige der Daten als Ergebnis:
Anfangssaldo + Rechnung – Retouren = Endsaldo
Ich versuche, UNION und JOINS in MySQL zu verwenden:
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
Ich erwarte folgendes Ergebnis:
Startguthaben | Lieferantenname | ID_A | Rechnungswert | Rückgabewert | End_Balance |
---|---|---|---|---|---|
1000 | Apfel | 1 | 700 | 100 | 1600 |
1000 | Xiaomi | 2 | 800 | 75 | 1725 |
1000 | Nokia | 3 | 650 | leer | 1650 |
leer | OPPO | 4 | leer | leer | leer |
Aber es funktioniert nicht gut, es zeigt die Ergebnisse in verschiedenen Zeilen an und die Berechnung des Endsaldos ist falsch Was ist der richtige Code, um dieses Ergebnis anzuzeigen?
您可以对子查询中的总和进行求和并将它们连接在一起
小提琴