Rumah >pangkalan data >tutorial mysql >Bagaimana untuk SUM Nilai Agregat Dengan Betul Apabila Menyertai Berbilang Jadual dalam MySQL?

Bagaimana untuk SUM Nilai Agregat Dengan Betul Apabila Menyertai Berbilang Jadual dalam MySQL?

Susan Sarandon
Susan Sarandonasal
2025-01-19 14:11:10545semak imbas

How to Correctly SUM Aggregate Values When Joining Multiple Tables in MySQL?

Sertai Jadual dengan Isu SUM dalam MYSQL

Sertai jadual dengan pengagregatan SUM boleh memperkenalkan kerumitan. Untuk menangani isu hasil yang salah dalam pertanyaan anda, mari kita mendalami masalah dan teroka penyelesaian.

Kebimbangan utama dalam pertanyaan yang diberikan ialah gabungan berbilang, menghasilkan produk silang. Pendaraban jumlah ini dengan bilangan baris yang sepadan dalam jadual lain membawa kepada keputusan yang salah. Untuk membetulkan isu ini, kami boleh menempatkan semula operasi SUM ke dalam subkueri.

Berikut ialah pertanyaan yang dioptimumkan yang menggabungkan subkueri untuk kedua-dua pengagregatan SUM:

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;

Pertanyaan ini menggunakan subkueri untuk kedua-dua minit dan jumlah penjumlahan, memastikan keputusan yang tepat dengan mengelakkan pendaraban silang hasil. Ia juga menyelaraskan jangka masa untuk kedua-dua subkueri untuk memastikan pengambilan data yang konsisten. Dengan memfaktorkan semula pertanyaan dengan subkueri, kami menyelesaikan isu yang disebabkan oleh gabungan berbilang dan pengagregatan SUM dengan berkesan.

Atas ialah kandungan terperinci Bagaimana untuk SUM Nilai Agregat Dengan Betul Apabila Menyertai Berbilang Jadual dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn