Menggabungkan Data daripada Berbilang Jadual untuk Penjumlahan: Menangani Keputusan Yang Salah
Dalam pertanyaan SQL anda, anda bertujuan untuk mendapatkan semula jadual yang terdiri daripada tiga lajur : "PROJECT," "SUM_AP," dan "SUM_INV." Walau bagaimanapun, anda telah menemui hasil yang salah disebabkan pengumpulan dalam proses pengagregatan.
Punca Keputusan Yang Salah:
Klausa "KUMPULAN OLEH" dalam pertanyaan anda menggabungkan nilai berdasarkan pada lajur "AP.[PROJECT]". Proses pengagregatan ini pada asasnya merumuskan entri "Nilai" pendua, yang membawa kepada hasil yang melambung.
Penyelesaian: Menggunakan Pertanyaan Sub-Pilih
Untuk menangani isu ini, kami boleh mengubah suai pertanyaan anda menggunakan sub-pilih pertanyaan:
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]
Penjelasan:
Pertanyaan yang disemak ini memastikan bahawa hanya nilai "PROJECT" yang berbeza dikumpulkan, dan jumlahnya dikira dengan betul, memberikan hasil yang diharapkan.
Atas ialah kandungan terperinci Mengapakah pengiraan jumlah SQL saya tidak betul apabila menggabungkan berbilang jadual, dan bagaimanakah saya boleh membetulkannya menggunakan subkueri?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!