Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Menggabungkan Dua Jadual dengan Struktur Serupa tetapi Kategori Berbeza ke dalam Jadual Output Tunggal?

Bagaimanakah Saya Boleh Menggabungkan Dua Jadual dengan Struktur Serupa tetapi Kategori Berbeza ke dalam Jadual Output Tunggal?

Barbara Streisand
Barbara Streisandasal
2024-12-22 21:31:171020semak imbas

How Can I Combine Two Tables with Similar Structures but Different Categories into a Single Output Table?

Menggabungkan Dua Jadual untuk Output Tunggal

Operasi pangkalan data selalunya memerlukan penggabungan data daripada berbilang sumber kepada output yang padu. Cabaran biasa ialah menggabungkan jadual dengan struktur yang serupa tetapi kategori yang berbeza. Pertimbangkan masalah berikut:

Anda mempunyai dua jadual, "KnownHours" dan "UnknownHours," dengan lajur termasuk ChargeNum (pengecam unik), CategoryID (tugasan kategori), Bulan (tarikh) dan Jam ( nilai sebenar). Tugasnya adalah untuk menggabungkan jadual ini, mengabaikan lajur Bulan, ke dalam jadual data tunggal, mengumpulkan Jam mengikut ChargeNum dan CategoryID.

Output yang dijangkakan ialah:

ChargeNum    CategoryID     Hours
111111       1              90
111111       2              50
111111       Unknown        110.5
222222       1              40
222222       Unknown        25.5

Untuk mencapai ini , kita boleh menggunakan operator UNION, yang menggabungkan hasil dua pertanyaan. Untuk masalah ini, kami akan membina dua pertanyaan:

Pertanyaan 1:

SELECT ChargeNum, CategoryID, SUM(Hours)
FROM KnownHours
GROUP BY ChargeNum, CategoryID

Pertanyaan ini mendapatkan semula ChargeNum, CategoryID dan jumlah Jam untuk setiap gabungan daripada jadual "KnownHours".

Pertanyaan 2:

SELECT ChargeNum, 'Unknown' AS CategoryID, SUM(Hours)
FROM UnknownHours
GROUP BY ChargeNum

Pertanyaan ini mendapatkan semula ChargeNum dan jumlah Jam untuk setiap entri dalam jadual "UnknownHours", memperuntukkan 'Unknown' sebagai CategoryID.

Menggabungkan kedua-duanya pertanyaan menggunakan UNION ALL menghasilkan output yang diingini:

SELECT ChargeNum, CategoryID, SUM(Hours)
FROM KnownHours
GROUP BY ChargeNum, CategoryID
UNION ALL
SELECT ChargeNum, 'Unknown' AS CategoryID, SUM(Hours)
FROM UnknownHours
GROUP BY ChargeNum

The UNION SEMUA operator menggabungkan hasil tanpa mengalih keluar pendua, memberikan paparan lengkap data gabungan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggabungkan Dua Jadual dengan Struktur Serupa tetapi Kategori Berbeza ke dalam Jadual Output Tunggal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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