Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mengagregat Data dengan Betul daripada Pelbagai Jadual dalam SQL Menggunakan Subqueries?

Bagaimana untuk Mengagregat Data dengan Betul daripada Pelbagai Jadual dalam SQL Menggunakan Subqueries?

Linda Hamilton
Lepaskan: 2025-01-01 13:44:11
asal
188 orang telah melayarinya

How to Correctly Aggregate Data from Multiple Tables in SQL Using Subqueries?

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

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

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

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!

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