Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mengagregat Nilai SUM Dengan Betul Merentasi Pelbagai Jadual Pangkalan Data?

Bagaimana untuk Mengagregat Nilai SUM Dengan Betul Merentasi Pelbagai Jadual Pangkalan Data?

Susan Sarandon
Lepaskan: 2024-12-29 05:45:11
asal
939 orang telah melayarinya

How to Correctly Aggregate SUM Values Across Multiple Database Tables?

Pengagregatan Pangkalan Data merentas Berbilang Jadual: Membetulkan Pengiraan Jumlah

Apabila berurusan dengan berbilang jadual dalam pangkalan data, fungsi pengagregatan seperti SUM memerlukan pengendalian yang teliti untuk memastikan keputusan yang tepat. Ini dicontohkan oleh pertanyaan yang cuba mengira jumlah nilai daripada dua jadual, AP dan INV, kedua-duanya mempunyai lajur [PROJECT] dan [Value]. Output yang diingini sepatutnya menyerupai:

PROJECT | SUM_AP | SUM_INV
Salin selepas log masuk

Walau bagaimanapun, pertanyaan yang diberikan mempamerkan hasil yang salah disebabkan ralat dalam penjumlahan:

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]
Salin selepas log masuk

Isunya terletak pada pengumpulan nilai. Klausa GROUP BY menggabungkan nilai pendua, yang membawa kepada jumlah yang salah.

Untuk membetulkannya, sub-pilihan boleh digunakan:

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]
Salin selepas log masuk

Pendekatan ini mengira jumlah secara berasingan bagi setiap [PROJEK ] menggunakan sub-pilihan, menghasilkan pengagregatan yang tepat.

Atas ialah kandungan terperinci Bagaimana untuk Mengagregat Nilai SUM Dengan Betul Merentasi Pelbagai Jadual Pangkalan Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan