Rumah >pangkalan data >tutorial mysql >Bagaimana untuk meringkaskan data dengan betul dari beberapa jadual SQL dan mengelakkan keputusan yang salah?
Meringkaskan Data daripada Pelbagai Jadual dalam SQL: Menangani Keputusan Yang Salah
Dalam bidang analisis data, selalunya perlu untuk menggabungkan maklumat daripada berbilang jadual untuk mendapatkan pemahaman yang menyeluruh. Satu tugas biasa ialah mengira jumlah nilai merentas jadual ini, dikumpulkan mengikut lajur biasa. Walau bagaimanapun, seperti yang terbukti daripada kod yang disediakan, hasil yang salah boleh timbul jika data tidak dikendalikan dengan sewajarnya.
Pertanyaan awal yang diberikan:
SELECT AP.[PROJECT], SUM(AP.Value) AS SUM_AP, SUM(INV.Value) AS SUM_INV FROM AP INNER JOIN INV ON (AP.[PROJECT] =INV.[PROJECT]) WHERE AP.[PROJECT] = 'XXXXX' GROUP BY AP.[PROJECT]
cuba mengira jumlah nilai daripada dua jadual, AP dan INV untuk sesuatu PROJEK. Walau bagaimanapun, isunya terletak pada penggunaan klausa GROUP BY. Menghimpunkan hasil mengikut AP.PROJECT menyebabkan nilai pendua dimasukkan dalam jumlah, yang membawa kepada jumlah yang salah.
Untuk membetulkannya, pendekatan yang lebih mantap menggunakan sub-pertanyaan diperlukan:
SELECT AP1.[PROJECT], (SELECT SUM(AP2.Value) FROM AP AS AP2 WHERE AP2.PROJECT = AP1.PROJECT) AS SUM_AP, (SELECT SUM(INV2.Value) FROM INV AS INV2 WHERE INV2.PROJECT = AP1.PROJECT) AS SUM_INV FROM AP AS AP1 INNER JOIN INV AS INV1 ON (AP1.[PROJECT] =INV1.[PROJECT]) WHERE AP1.[PROJECT] = 'XXXXX' GROUP BY AP1.[PROJECT]
Pertanyaan dipertingkat ini menggunakan sub-pertanyaan untuk mengira jumlah nilai bagi setiap PROJEK secara individu. Dengan mengasingkan pengiraan dalam sub-pertanyaan, kami menghapuskan masalah nilai pendua yang disertakan dalam jumlah. Hasilnya ialah ringkasan data yang tepat dan bermakna daripada berbilang jadual, dikumpulkan mengikut lajur yang dikehendaki.
Atas ialah kandungan terperinci Bagaimana untuk meringkaskan data dengan betul dari beberapa jadual SQL dan mengelakkan keputusan yang salah?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!