SQL-Verarbeitung zum Bereinigen und Summieren doppelter Daten in verbundenen Tabellen
P粉354948724
P粉354948724 2023-09-13 15:15:50
0
1
465

Ich rufe Berichte aus einem Buchhaltungssystem ab. Das System hat die unangenehme Angewohnheit, Duplikate in der Datenbank abzulegen, die es intern verarbeitet (anstatt sie überhaupt zu bereinigen!)

Nehmen Sie als Beispiel die Gesamttabelle der Rechnung 125:

+------------+-----------+----------+
| invoice_id | code      | amount   |
+------------+-----------+----------+
|        125 | sub_total | 300.0000 |
|        125 | tax       |  30.0000 |
|        125 | total     | 330.0000 |
|        125 | sub_total | 300.0000 |
|        125 | tax       |  30.0000 |
|        125 | total     | 330.0000 |
+------------+-----------+----------+

Und die Rechnungstabelle mit derselben ID

+-----+----------+
| id  | amount   |
+-----+----------+
| 125 | 330.0000 |
+-----+----------+

Ich möchte den Gesamtumsatz und die Steuern für einen Zeitraum generieren (für australisches BAS)

Meine minimale funktionierende Beispielabfrage (die funktionieren würde, wenn die Daten sauber sind) ist

select sum(a.amount) as total_sales, sum(c.amount) as total_GST
from 7cn_invoices a 
    INNER JOIN 7cn_invoice_totals c ON a.id = c.invoice_id
where c.code = 'tax';

Aufgrund von Duplikaten in der Gesamtsummentabelle erhalte ich jedoch den doppelten Gesamtumsatz, der sein sollte. Gibt es außer dem Patchen des Codes eine beste Möglichkeit, dieses Problem zu lösen?

P粉354948724
P粉354948724

Antworte allen(1)
P粉511985082

你可以通过使用带有DISTINCT的子查询来删除重复项

db<>fiddle 在这里

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!