Pertanyaan SQL untuk Mengagregatkan Data daripada Berbilang Jadual
Dalam SQL, mengagregatkan data daripada berbilang jadual boleh dicapai menggunakan pelbagai teknik. Berikut ialah senario dan penyelesaian kepada pertanyaan yang menggabungkan data daripada dua jadual:
Senario:
Pertimbangkan dua jadual, AP dan INV, kedua-duanya mengandungi lajur [PROJEK] dan [Nilai]. Matlamatnya adalah untuk mendapatkan semula hasil yang mengira jumlah [Nilai] bagi setiap projek daripada kedua-dua jadual, menghasilkan format berikut:
PROJECT | SUM_AP | SUM_INV ---------+--------+-------- XXXXX | 500 | 800
Pertanyaan Salah:
Pertanyaan berikut telah dicuba tetapi mengakibatkan tidak tepat sums:
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]
Sebab Keputusan Tidak Betul:
Pertanyaan yang salah mengumpulkan nilai sebelum menggunakan jumlah, yang membawa kepada nilai projek pendua dimasukkan ke dalam jumlah.
Penyelesaian Betul:
Untuk menangani ini, pertanyaan yang melibatkan 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]
Pertanyaan ini menggunakan sub-pilihan untuk mengira jumlah dalam setiap projek secara berasingan, menghapuskan isu nilai pendua dan memberikan hasil agregat yang betul.
Atas ialah kandungan terperinci Bagaimana untuk Mengagregat Data dengan Betul daripada Pelbagai Jadual dalam SQL Menggunakan Subqueries?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!