Heim >Datenbank >MySQL-Tutorial >Wie summiere ich aggregierte Werte korrekt, wenn ich mehrere Tabellen in MySQL verbinde?
Tabellen mit SUM-Problem in MYSQL verbinden
Das Verknüpfen von Tabellen mit SUM-Aggregation kann zu Komplexitäten führen. Um das Problem falscher Ergebnisse in Ihrer Abfrage zu beheben, gehen wir näher auf das Problem ein und suchen nach einer Lösung.
Das Hauptproblem bei der angegebenen Abfrage sind mehrere Verknüpfungen, die zu einem Kreuzprodukt führen. Diese Multiplikation von Summen mit der Anzahl übereinstimmender Zeilen in anderen Tabellen führt zu fehlerhaften Ergebnissen. Um dieses Problem zu beheben, können wir die SUM-Operationen in Unterabfragen verlagern.
Hier ist eine optimierte Abfrage, die Unterabfragen für beide SUM-Aggregationen enthält:
SELECT last_name, first_name, DATE_FORMAT(LEAST(mil_date, tm_date), '%m/%d/%y') AS dates, total, minutes FROM bhds_teachers AS i LEFT JOIN ( SELECT ds_id, YEARWEEK(mil_date) AS week, MIN(mil_date) AS mil_date, SUM(drive_time) AS minutes FROM bhds_mileage WHERE mil_date BETWEEN '2016-04-11' AND '2016-04-30' AND bhds_mileage.ds_id = 5 GROUP BY ds_id, week) AS m ON m.ds_id = i.ds_id LEFT JOIN ( SELECT ds_id, YEARWEEK(tm_date) AS week, MIN(tm_date) AS tm_date, SUM(tm_hours) AS total WHERE tm_date BETWEEN '2016-04-11' AND '2016-04-30' AND bhds_timecard.ds_id = 5 GROUP BY ds_id, week) AS t ON t.ds_id = i.ds_id AND t.week = m.week;
Diese Abfrage verwendet Unterabfragen sowohl für Minuten als auch für die Summe Summierungen und stellen genaue Ergebnisse sicher, indem Kreuzproduktmultiplikationen vermieden werden. Außerdem werden die Zeitrahmen für beide Unterabfragen angepasst, um einen konsistenten Datenabruf sicherzustellen. Durch die Umgestaltung der Abfrage mit Unterabfragen lösen wir effektiv das Problem, das durch mehrere Verknüpfungen und SUM-Aggregation verursacht wird.
Das obige ist der detaillierte Inhalt vonWie summiere ich aggregierte Werte korrekt, wenn ich mehrere Tabellen in MySQL verbinde?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!