Rumah >pangkalan data >tutorial mysql >Bagaimana untuk SUM Nilai Agregat Dengan Betul Apabila Menyertai Berbilang Jadual dalam 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!